- Updated UserProfileSerializer to handle password updates securely by hashing new passwords.
- Modified UserVerifyView to improve user creation and account takeover logic, ensuring unusable passwords are set for new and converted guest accounts.
- Updated UserRegisterSerializer to make device_id write-only and handle its assignment during user creation.
- Implemented email normalization in UserRegisterSerializer, UserVerifySerializer, and UserLoginSerializer to ensure case-insensitive uniqueness.
- Refactored UserRecoverPasswordSerializer to validate email format without checking for database uniqueness.
- Modified the unique_together constraint for the User model to only require uniqueness on the email field, removing device_id from the constraints.
- Added a migration to apply this change to the database schema.
- Changed device_id field in UserRegisterSerializer to be optional.
- Updated UserVerifyView to handle device_id more gracefully, allowing for None values and adjusting user creation logic accordingly.
- Altered the thumbnail field in the Course model to remove null and blank options, making it mandatory.
- Added a migration to reflect this change in the database schema.
- Made thumbnail field required in CourseForm.
- Added validation to prevent clearing existing thumbnail.
- Enforced requirement for uploading a thumbnail on creation or when no existing thumbnail is present.
- Removed the API documentation README file as it is no longer needed.
- Added a new script to optimize Hadis transmitter chains, ensuring a maximum of 5 transmitters and exactly one gap.
- Enhanced the Hadis data seeding script for better performance with batch operations and duplicate checks.
- Updated utility functions to streamline thumbnail generation and improve code readability.
- Implemented `seed_basic_data.py` to seed essential Hadis app models including HadisStatus, HadisTag, and HadisSect with initial records.
- Created `seed_hadis_data.py` for comprehensive data seeding, establishing realistic sample records for all Hadis app models while maintaining relationships and business logic.
- Introduced retry logic for database operations to handle potential locks and integrity errors during seeding.
- Added a test command `test_sects.py` to verify the creation of HadisSect records and check for existing sects.
- Created a new HTML template for API documentation with a responsive design and interactive elements.
- Added an authentication page for Swagger UI, allowing users to enter their API token.
- Implemented a custom Swagger UI template with a fixed authentication banner and user information display.
- Introduced a pagination utility class to return all items without pagination, enhancing data retrieval flexibility.
- Added seed images and test files for future development and testing purposes.