Skip to content

Cross-section backlog/improvement registration + section-aware roll list - #1942

Merged
vikrantwiz02 merged 2 commits into
FusionIIIT:prod/acad-reactfrom
vikrantwiz02:cross-section-backlog
Aug 3, 2026
Merged

Cross-section backlog/improvement registration + section-aware roll list#1942
vikrantwiz02 merged 2 commits into
FusionIIIT:prod/acad-reactfrom
vikrantwiz02:cross-section-backlog

Conversation

@vikrantwiz02

Copy link
Copy Markdown
Member

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 (migration 0023, child of 0022 — no leaf conflict) records the chosen running section; bound onto the course_registration on 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 home Student.section — so backlog students show under their assigned section.
  • assign_backlog_sections management 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

  • Only new migration is 0023 (additive FK). No --merge needed on a clean prod.
  • After deploy, run once per term: 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).

- 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'.
@vikrantwiz02
vikrantwiz02 merged commit 0be9863 into FusionIIIT:prod/acad-react Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant