Skip to content

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 free or schedule affect 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.