This commit refactors the LMS architecture from a flat 2-tier structure to a granular 3-tier structure to support better course organization, while ensuring zero downtime or breaking changes for existing frontend clients.
Introduced `CourseChapter` model as the new grouping layer
2 endpoints (`/v2/.../lessons/`): Introduced new `LessonListV2APIView` and `CourseChapterSerializer` to return the new nested JSON schema (Chapters -> Lessons) for the upcoming accordion UI.
Created robust `migrate_lessons_to_chapters` management command.
Registered `CourseChapter` and added `CourseChapterInline` to `CourseAdmin` for seamless content management.
moved the Quizzes tab in Course section.
in the course details we have a quiz section ,accessing to all the quizzes of that course
an action button for quizzes to navigate to related course added
quiz model updated with course field
book creation is now only creates if a edition or folder mentioned, not blindly all the volumes !
script deletes the old books
some models updated with new values
updated the not supported lazy text fields
add inline tabs for course , livesession and quiz tabs
enhanced chat messages tab to manage messages better
updated the dropdown styles for better ux
updated missing lazy text keywords for django messages in related models
updated .po file and translate the empty values in it
add a unfold translations file to keep the unfold messages whenever we run makemasseges.
models updated with lock values , course model has two group lock and professor lock options
serializers updated with new fields
admin panel updated for this new fields
signals configured to automatically lock/unlock the chatrooms related to courses based on the boolean values of course
to chat room page navigation shortcut is updated with unfold action buttons instead of html files
- Enhanced session handling by checking for active sessions before creating a new room in PlugNMeet, reducing unnecessary API calls.
- Implemented logic to reactivate ended sessions and log relevant actions for better traceability.
- Added conditional room creation to avoid duplicate rooms, improving overall efficiency and user experience.
- Updated CourseLiveSessionRoomCreateAPIView to filter out ended sessions by adding `ended_at__isnull=True` in the session creation logic.
- Introduced a new method in CourseLiveSessionTokenAPIView to build centralized metadata for room settings, ensuring client overrides are not permitted and enhancing session configuration consistency.