Cross-section backlog/improvement registration + section-aware roll list - #1942
Merged
vikrantwiz02 merged 2 commits intoAug 3, 2026
Merged
Conversation
- CourseAddRequest.course_instructor (migration 0023): records the section a backlog/improvement student registers into when their own section doesn't run the course; bound onto the registration on approval. - add_course / acad_add_course: pick a running section; sectioned courses can't be registered without one; other-section registration only as Backlog/Improvement. - get_student_add_courses / get_add_course_courses: return each course's running sections. - generate_xlsheet_api: roll list now sections by the registration's offering (course_instructor), falling back to home section — so backlog students appear under their assigned section. - assign_backlog_sections management command: one-time, whole-term bulk placement (home-letter else least-full) for existing unsectioned backlog/improvement regs.
Preview, CSV template, and submit now match the section-aware roll list: scope the roster by the offering each registration is bound to (course_instructor.section_label), falling back to the student's home section only for pre-sectioning rows. Fixes acadadmin seeing cross-section backlog/improvement and transferred students as 'Missing Registration'.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lets a student retaking a course as Backlog/Improvement register into a section that's actually running when their own section doesn't offer it, and makes the roll list section-correct for them.
Backend
CourseAddRequest.course_instructor(migration0023, child of0022— no leaf conflict) records the chosen running section; bound onto thecourse_registrationon approval.add_course(student) /acad_add_course(acadadmin): pick a running section; a sectioned course can't be registered without one; registering into a section other than the student's own is allowed only as Backlog/Improvement. Existing BL-slot + grade eligibility unchanged.get_student_add_courses/get_add_course_courses: return each course's running sections for the picker.generate_xlsheet_api: roll list now sections by the registration's offering (course_instructor), falling back to homeStudent.section— so backlog students show under their assigned section.assign_backlog_sectionsmanagement command: one-time, whole-term bulk placement (--year --sem,--dry-run) for existing unsectioned backlog/improvement regs, using home-letter-else-least-full.Deploy notes
0023(additive FK). No--mergeneeded on a clean prod.python manage.py assign_backlog_sections --year 2026-27 --sem "Odd Semester"to place the existing backlog students. Enforcement keeps it clean afterward — no recurring step.Frontend counterpart: FusionIIIT/Fusion-client (acad-main).