Classrooms
API fact source: Django backend generated docs
Why Classroom Schedules Are Projections
classrooms owns classroom master data and aggregated availability views. It does not own course or reservation state; it combines occupancy facts from other modules.
Code entry:
backend/apps/classrooms/models/backend/apps/classrooms/views/backend/apps/classrooms/services/
Availability Semantics
Classroom uniqueness is represented by building + room_number. Free-room lookup excludes both course occupancy and manual reservations; pending manual reservations are also shown as occupied blocks to avoid duplicate booking before approval completes.
Classroom schedules are derived views, not a new source of truth. They overlay CourseOccurrence and reservation records, so course conflict logic belongs in course/reservation services rather than being copied into this module.
Change Impact
- Changes to
freeorscheduleaffect course occurrences, manual reservations, and frontend timeline rendering. - Classroom import supports both create and update. Changing the unique key or import fields affects historical data matching.
- Missing or invalid capacity affects reservation capacity validation.
- Classroom status changes can affect free-room lookup, reservations, repairs, and signage binding.