Programme-scoped academic admin pages, and BL slots that show what they clear - #293
Merged
vikrantwiz02 merged 1 commit intoAug 18, 2026
Merged
Conversation
…ears Acad UG, Acad PG and Acad Ph.D. join the role vocabulary as programme-level admins. Where the backend scopes its data, those roles now reach the same pages acadadmin does; where a page asks which programme to act on, the dropdown is filtered to the one they administer and locked when only one choice remains. Pages that only make sense for one level are hidden from the others: UG loses Thesis & Course Requests, and PG/Ph.D. lose the UG-only course-change pages. acadadmin keeps everything it had. BL slots gain the missing case: a course may be cleared by retaking it, so the slot's own source stays selectable while remaining excluded from every other slot. The tables that report a request now name what it clears -- "Replaces CS8007 - Improvement" or "Retake - Improvement" -- and the pre-submit preview resolves a retake instead of printing "Invalid", since the retaken course is not in the slot's own course list. A regression test asserts no nav group repeats its own child's label for any of the nine roles, which is what the duplicate "Batches" entry was.
vikrantwiz02
force-pushed
the
acad-roles-scoping
branch
from
August 18, 2026 09:42
6666c56 to
0f83ad1
Compare
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.
Frontend half of the Acad UG / Acad PG / Acad Ph.D. roles. Needs FusionIIIT/Fusion#1957, which does the scoping the UI relies on.
Programme-scoped roles
src/ui/nav/roles.jsgainsPROGRAMME_ADMIN_ROLESandprogrammesForRole()as the single place that maps a role to the levels it administers. From there:acadadminreaches, wherever the backend scopes the data behind themacadadminis unchanged and still sees everythingBL slots
A backlog course may be cleared by retaking it, not only by one of the slot's stand-ins, so the slot's own source stays selectable while still being excluded from every other slot's dropdown. A source already being cleared through another slot is left out entirely, matching the rule the backend now enforces.
Both request tables and the pre-submit preview name what a registration clears — "Replaces CS8007 · Improvement" or "Retake · Improvement" — from
source_course/registration_type, which the API already returned and neither table rendered. The preview also stops printing "Invalid" for a retake: it looked the chosen course up in the slot's list, and a retaken course is not in it.Also
distis excluded from eslint: the advisory CI step runs afternpm run buildand was linting the 4.9 MB bundle, which left run 32101147557 in that step for four and a half hours after tests and build had passed (also in Commit the lockfile so CI can actually run #292, whichever lands first)Checks
409 tests pass (32 in
blSlot, 9 of them new),lint:strictclean, build clean.