Files
RosterChief/events/services/__init__.py
Bernard Siebens a7fdab4352 Show blocked sign-ups on mobile instead of silently hiding the event
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
2026-08-22 19:24:11 +02:00

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",
]