byceps/services/timetable/models.py
"""
byceps.services.timetable.models
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Copyright: 2014-2024 Jochen Kupperschmidt
:License: Revised BSD (see `LICENSE` file for details)
"""
from __future__ import annotations
from dataclasses import dataclass
from datetime import datetime
from typing import NewType
from uuid import UUID
from byceps.services.party.models import PartyID
TimetableID = NewType('TimetableID', UUID)
TimetableItemID = NewType('TimetableItemID', UUID)
@dataclass(frozen=True, slots=True)
class Timetable:
id: TimetableID
party_id: PartyID
hidden: bool
items: list[TimetableItem]
@dataclass(frozen=True, slots=True)
class TimetableItem:
id: TimetableItemID
timetable_id: TimetableID
scheduled_at: datetime
description: str
location: str | None
link_target: str | None
link_label: str | None
hidden: bool