"""Énumérations du domaine. Stockées en base comme VARCHAR + contrainte CHECK (`native_enum=False`) : pas de type ENUM natif PostgreSQL, donc pas de migration de type à gérer. """ import enum class Role(enum.StrEnum): COORDINATOR = "COORDINATOR" LEAD = "LEAD" VOLUNTEER = "VOLUNTEER" class AvailabilityStatus(enum.StrEnum): AVAILABLE = "AVAILABLE" IF_NEEDED = "IF_NEEDED" UNAVAILABLE = "UNAVAILABLE" class AssignmentStatus(enum.StrEnum): PROPOSED = "PROPOSED" CONFIRMED = "CONFIRMED" DECLINED = "DECLINED" CANCELLED = "CANCELLED" class AssignmentSource(enum.StrEnum): SOLVER = "SOLVER" MANUAL = "MANUAL" class PositionCategory(enum.StrEnum): BAR = "BAR" TICKETING = "TICKETING" WELCOME = "WELCOME" PARKING = "PARKING" CLEANING = "CLEANING" CATERING = "CATERING" SETUP = "SETUP" STAGE = "STAGE" OTHER = "OTHER" class TshirtSize(enum.StrEnum): XS = "XS" S = "S" M = "M" L = "L" XL = "XL" XXL = "XXL" XXXL = "XXXL" # Statuts d'affectation « actifs » : seuls ceux-ci comptent pour les règles de # chevauchement, de cumul horaire et de repos (voir app/validation). ACTIVE_ASSIGNMENT_STATUSES: frozenset[AssignmentStatus] = frozenset( {AssignmentStatus.PROPOSED, AssignmentStatus.CONFIRMED} )