Add a team attendance KPI panel and no-show check-in tracking
Team pages now show, for the selected season: overall attendance rate, best/worst attenders, players who missed the last 2 practices, and no-shows (an affirmative RSVP checked in as absent). No-shows need a real distinction the RSVP status alone can't make, so Attendance gains a separate showed_up tri-state field, usable today via Django admin -- a full check-in screen is future work for the coaches app. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R1gj3J1QPfP38XWpnpbFpy
This commit is contained in:
@@ -421,6 +421,14 @@ Attendance(UUIDModel) # through model Event <-> Member
|
||||
club-wide (`team=None`), so `season` stays a first-class FK. Keep it consistent in a
|
||||
service/clean().
|
||||
|
||||
**As built, `Attendance` also carries `showed_up`** (nullable bool, default `None`) —
|
||||
deliberately separate from `status`: `status` is the RSVP, `showed_up` is whether they
|
||||
actually turned up, set by a check-in. `None` means "never checked in" (true for every
|
||||
row today — there's no check-in UI yet, only Django admin); a "no-show" is
|
||||
`status in (present, selected)` and `showed_up is False`, and is *never* inferred from
|
||||
a missing check-in. See `events/services/attendance.py::record_check_in` and
|
||||
`management/views.py::TeamDetailView`'s attendance panel.
|
||||
|
||||
### 5.4 `news`, `pages`, `home` (public site / editorial)
|
||||
|
||||
**`news` is built** (as of the coach_manager-authoring / editor-release-flow work) —
|
||||
|
||||
Reference in New Issue
Block a user