Staff

The staff app manages convention staff and volunteers: departments, leadership roles, HR, and time-clocking/shifts.

What it does

  • Departments & module ownershipDepartment groups staff; a department can own a Midsummer module (ModuleOwnership), which gates leadership-level permissions to that module’s surface.

  • Permissive, role-based permissions — staff are assigned member types (e.g. staff, volunteer, deputy, leadership) and per-department titles. The permission system is permissive: a leadership member of a department gains elevated access to that department’s data (see Permissions).

  • Department titlesDepartmentTitle (a catalog per department) + DepartmentTitleAssignment give staff/volunteers/deputies a display title (catalog or free-text). Titles flow into the roster view and Excel export.

  • HR — personnel/HR management surfaced in staff-hr.

  • Shifts, slots, bidsShift, ShiftSlot, ShiftSlotBid, ShiftAssignment, plus OpenPosition/PositionApplication and an OnboardingFlow/OnboardingRecord for new-staff onboarding.

  • Transfer & auditTransferRequest for inter-department moves and an AuditLog (mirrored by the register module’s edit log) for accountability.

  • Volunteer/Go-Fur time clocking — sheets and shifts.

Key models

Event
  └─ Department
        ├─ ModuleOwnership      # department owns a module → leadership perms
        ├─ DepartmentTitle ─ DepartmentTitleAssignment
        ├─ Shift ─ ShiftSlot ─ ShiftSlotBid / ShiftAssignment
        ├─ OpenPosition ─ PositionApplication
        ├─ OnboardingFlow ─ OnboardingRecord
        └─ TransferRequest
  └─ AuditLog

Where to look

  • Models: staff/models.py

  • Views + roster building: staff/views.py

  • Serializers (title validation, roster export): staff/serializers.py

  • Frontend: ui/src/app/apps/staff/