A member excluded from an event's Attendance sync by an open onboarding requirement (events.services.attendance.effective_members) previously just never saw that event anywhere -- no row, no explanation. Two new read-side functions mirror that exclusion instead of hiding it: club.services. onboarding.open_requirements_blocking (per-member, "why") and events. services.attendance.blocked_upcoming_events_for_member (which of their upcoming events are affected). The Calendar now shows those events as a distinct muted "Blocked" row naming the outstanding requirement, and the event detail page shows a "Can't sign up yet" card for the same reason -- no RSVP buttons, no lineup/ referee actions, just the explanation. Write-side blocking (who actually gets an Attendance row, who a coach can select) is untouched. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ECGMEwrc2k4D8VQuwjstj9
40 lines
921 B
Python
40 lines
921 B
Python
from .attendance import (
|
|
blocked_upcoming_events_for_member,
|
|
effective_members,
|
|
notify_newly_invited,
|
|
player_attendance_rankings,
|
|
players_who_missed_recent_practices,
|
|
record_check_in,
|
|
sync_event_attendances,
|
|
team_attendance_rate,
|
|
team_no_shows,
|
|
)
|
|
from .recurrence import (
|
|
apply_template,
|
|
cancel_occurrence,
|
|
detach_occurrence,
|
|
generate_occurrences,
|
|
horizon,
|
|
occurrence_datetimes,
|
|
propagate_series,
|
|
)
|
|
|
|
__all__ = [
|
|
"apply_template",
|
|
"blocked_upcoming_events_for_member",
|
|
"cancel_occurrence",
|
|
"detach_occurrence",
|
|
"effective_members",
|
|
"generate_occurrences",
|
|
"horizon",
|
|
"notify_newly_invited",
|
|
"occurrence_datetimes",
|
|
"player_attendance_rankings",
|
|
"players_who_missed_recent_practices",
|
|
"propagate_series",
|
|
"record_check_in",
|
|
"sync_event_attendances",
|
|
"team_attendance_rate",
|
|
"team_no_shows",
|
|
]
|