byceps/byceps

View on GitHub
byceps/services/ticketing/models/checkin.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
"""
byceps.services.ticketing.models.checkin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

:Copyright: 2014-2024 Jochen Kupperschmidt
:License: Revised BSD (see `LICENSE` file for details)
"""

from dataclasses import dataclass
from datetime import datetime
from uuid import UUID

from byceps.services.party.models import PartyID
from byceps.services.seating.models import SeatID
from byceps.services.user.models.user import User, UserID

from .ticket import TicketCode, TicketID


@dataclass(frozen=True)
class PotentialTicketForCheckIn:
    id: TicketID
    party_id: PartyID
    code: TicketCode
    occupied_seat_id: SeatID | None
    used_by: User | None
    revoked: bool
    user_checked_in: bool


@dataclass(frozen=True)
class ValidTicketForCheckIn:
    id: TicketID
    code: TicketCode
    used_by: User
    occupied_seat_id: SeatID | None


@dataclass(frozen=True)
class TicketCheckIn:
    id: UUID
    occurred_at: datetime
    ticket_id: TicketID
    initiator_id: UserID