Files
benevoles/backend/app/models/enums.py
T
AdamThomasandClaude Sonnet 5 0bd38a6465
ci-cd / build-backend (push) Failing after 4m12s
ci-cd / build-frontend (push) Skipped
ci-cd / deploy (push) Skipped
Formulaire public : paiement de la cotisation via l'API SumUp (remplace Yapla)
Remplace le simple lien Yapla statique par une vraie intégration API SumUp :
checkout hébergé créé à la soumission du formulaire, statut de paiement
(PENDING/PAID/FAILED/EXPIRED) tenu à jour par un webhook SumUp et visible sur
la fiche du bénévole. La cotisation n'est plus un montant unique : la
coordination configure autant de types de paiement qu'elle veut (libellé +
montant, ex. « Cotisation classique », « Mécénat »), et le bénévole en
choisit un à l'inscription — le libellé et le montant choisis sont figés sur
le bénévole, indépendamment d'une modification ultérieure de la config.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 19:56:04 +02:00

74 lines
1.8 KiB
Python

"""É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 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 BadgeFieldType(enum.StrEnum):
"""Champ affichable sur le recto d'un badge (voir `app/badges/`)."""
FULL_NAME = "FULL_NAME"
POSITIONS = "POSITIONS"
CATEGORY = "CATEGORY"
ROLE = "ROLE"
class BadgeAlign(enum.StrEnum):
LEFT = "LEFT"
CENTER = "CENTER"
RIGHT = "RIGHT"
class FeePaymentStatus(enum.StrEnum):
"""Statut d'un paiement de cotisation via l'API SumUp (voir `app/sumup/`
et `app/api/forms.py`). Reprend tel quel le statut d'un checkout SumUp —
`NULL` sur `Volunteer.fee_payment_status` tant qu'aucun checkout n'a
jamais été créé pour ce bénévole."""
PENDING = "PENDING"
PAID = "PAID"
FAILED = "FAILED"
EXPIRED = "EXPIRED"
class FormFieldType(enum.StrEnum):
"""Champ activable sur le formulaire public d'inscription (voir
`app/api/forms.py`). Nom/prénom sont toujours collectés, pas au choix de
la coordination — ils sont indispensables à la création du bénévole."""
EMAIL = "EMAIL"
PHONE = "PHONE"
POSITION_WISHES = "POSITION_WISHES"
ARTIST_WISHES = "ARTIST_WISHES"
COMPANION_WISH = "COMPANION_WISH"
AVAILABLE = "AVAILABLE"
WILLING_TO_PAY_FEE = "WILLING_TO_PAY_FEE"
PHOTO = "PHOTO"
COMMENT = "COMMENT"