Fix the referee PDF's card background, make locations searchable, and add game end times to the API
Referee PDF: the info-card background used CSS color-mix(), which WeasyPrint doesn't support -- the rule was silently dropped, leaving the card with no background at all. Computed in Python instead (management/pdf.py) and baked into the template as a plain hex value; the tint is based on the club's primary_color, falling back to secondary_color when primary is itself (near) black or white, where a straight tint would be invisible or too harsh. Event forms: the location picker now shows "Name — City" (plus the country when it isn't Belgium) and is searchable by name or city, reusing the existing single-select searchable-select.js widget. Games API: GameOut now carries `end` (explicit, or start + 2h when a GAME was saved without one -- Event.save() sets this, never overwriting an explicit end; other event kinds are untouched). /games/upcoming/ now includes anything not yet finished rather than only things that haven't started, so a game already in progress keeps showing up until its window closes; `status` was adjusted to match so a game returned there never calls itself "finished". Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -21,22 +21,17 @@ only (still counts against Event.max_referees, still capacity-checked), for
|
||||
e.g. a federation-appointed referee the club still needs to pay.
|
||||
"""
|
||||
|
||||
import datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from django.db import transaction
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from events.models import Event, EventReferee
|
||||
from events.models import ASSUMED_EVENT_DURATION, Event, EventReferee
|
||||
from events.services.attendance import effective_members
|
||||
from members.models import Member
|
||||
from teams.models import Team
|
||||
|
||||
# Used only to give an event with no explicit `end` a time window for the
|
||||
# overlap check below -- never written back to the event itself.
|
||||
ASSUMED_EVENT_DURATION = datetime.timedelta(hours=2)
|
||||
|
||||
|
||||
class RefereeAssignmentError(Exception):
|
||||
"""A referee could not be assigned to a game."""
|
||||
|
||||
Reference in New Issue
Block a user