- Introduced `HadisCollection` and `HadisInCollection` models to manage collections of hadis.
- Updated URL patterns to include new endpoints for collections and syncing hadis data.
- Enhanced admin interface to support management of hadis collections and their items.
- Added serializers for handling collections and syncing hadis data.
- Implemented a new API view for retrieving hadis statistics.
- Refactored existing serializers and views to accommodate new features and improve data handling.
- Added `city_detection_ip.py` for optimized location detection by coordinates and IP.
- Introduced caching for location results to improve performance.
- Updated `LocationHistoryView` to utilize new geolocation methods.
- Added `RegionInfoView` for retrieving region information based on IP and user agent.
- Included new dependencies `geoip2` and `geopy` in `requirements.txt`.
- Created GeoLite2 database files for city and country data.
- Updated URL patterns to include a new endpoint for region information.
- Changed URL configurations in article, course, and transaction apps to use re_path for improved regex matching of slugs.
- This update enhances flexibility in slug handling across various endpoints, ensuring consistency in URL patterns.
- Added `TransactionReceipt` model to store payment receipts uploaded by users.
- Introduced endpoints for uploading receipts and listing receipts associated with transactions.
- Updated `TransactionParticipant` model to include a new status 'waiting_approval'.
- Enhanced serializers to handle receipt uploads and retrievals, including validation for file uploads.
- Updated admin interface to manage transaction receipts effectively.
- Added comprehensive API documentation for transaction receipt operations.
- Added new models for `ContentPart` and `TextSection` to support structured article content, allowing for bilingual Arabic text and translations.
- Updated serializers to include nested text sections within content parts, enhancing the API response structure.
- Introduced a management command to seed article data with Russian content about Imams and Prophets, including categories, collections, and structured content sections.
- Enhanced the admin interface to manage text sections within content parts effectively.
- Created a sample API response for articles to demonstrate the new structure.
- Introduced a new test script `test_apis.py` to verify all video and podcast API endpoints.
- Implemented a function to test individual endpoints with support for authenticated and anonymous users.
- Included detailed logging of test results, including status codes and errors, to facilitate debugging and ensure API reliability.
- Enhanced test coverage for both video and podcast APIs, ensuring all critical endpoints are validated.
- Introduced `audio_file` and `video_file` SerializerMethodFields in PodcastListSerializer and VideoListSerializer, respectively.
- Implemented methods to return the full URL for audio and video files if they exist, enhancing the API response with direct access to media files.
- Updated fields in both serializers to include the new file attributes, improving the data structure for clients consuming the API.
- Changed detail endpoints in podcast and video URL configurations to use re_path for improved regex matching of slugs.
- This change enhances flexibility in slug handling and maintains consistency across the application.rl
- Added management commands to create podcast and video categories in Russian, ensuring a structured categorization system.
- Updated podcast and video playlist creation commands to associate playlists with the newly created categories.
- Enhanced documentation to reflect the new category creation process and its integration into the podcast and video systems.
- Introduced new models for PodcastPlaylist and VideoPlaylist, replacing the outdated PodcastInCollection and VideoInCollection models.
- Updated admin interfaces to manage playlists effectively, including new fields for slug, slogan, description, and thumbnail.
- Enhanced serializers to support playlist data and added methods for calculating total time and retrieving associated videos/podcasts.
- Implemented management commands for creating playlists and cleaning up old data, ensuring a streamlined user experience.
- Adjusted API endpoints to accommodate the new playlist structure while maintaining backward compatibility for existing video endpoints.
- Introduced a new service choice 'Article' to the Bookmark model.
- Updated the database migration to reflect the new service choice in the 'service' field of the Bookmark model.
- Enhanced the service validation logic to include checks for the new 'Article' service type.
- Updated `ArticleCollectionAdminBase` and `PodcastCollectionAdminBase` to include a new `get_display_position` method for better visual distinction between pinned and regular collections.
- Modified verbose names for `PinnedArticleCollection` and `MiddleArticleCollection` to clarify their purpose in the admin interface.
- Added a new README for podcast collections to provide guidance on managing collections and highlight key differences between pinned and regular collections.
- Updated settings to improve sidebar navigation for article and podcast collections, ensuring clear access to both collection types.
- Introduced a new `DownloadedBooksListView` to retrieve books downloaded by the current user.
- Updated `urls.py` to include the new endpoint `/books/downloaded/`.
- Removed the `is_downloaded` parameter from the `BookListView` to streamline the book listing process.