Files
benevoles/backend/app/models/__init__.py
T
AdamThomasandClaude Sonnet 5 b7fc80a7dc Étape 20 : planches de badges bénévoles (PDF)
Recto personnalisable (fond image + champs positionnés : nom, poste(s)
affectés, catégorie, rôle) via un éditeur visuel glisser-déposer ; verso
fixe, la même image pour tous les bénévoles. Nouvel écran « Badges »
(COORDINATION uniquement, /badges).

Backend : modèle BadgeTemplate/BadgeField (migration 0011), génération
PDF isolée (app/badges/pdf.py, ReportLab — planches recto suivies des
planches verso correspondantes pour une impression recto-verso), route
POST /editions/{id}/badges/generate, tests (module pur + API).

Frontend : client HTTP (upload multipart, réponses binaires images/PDF),
client mock (mode démonstration), éditeur de positionnement en
millimètres (coordonnées partagées avec le backend), écran de génération
avec sélection des bénévoles et téléchargement.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-20 20:05:03 +02:00

57 lines
1.1 KiB
Python

"""Tables SQLModel du domaine et énumérations associées.
Importé par Alembic (`app/migrations/env.py`) et par les tests pour enregistrer
les métadonnées sur `SQLModel.metadata`.
"""
from app.models.base import TimestampMixin, local_now
from app.models.domain import (
Account,
Artist,
Assignment,
Availability,
BadgeField,
BadgeTemplate,
DayPart,
Edition,
MagicLinkToken,
Position,
Shift,
Volunteer,
VolunteerArtist,
VolunteerCompanionWish,
VolunteerPositionWish,
)
from app.models.enums import (
AssignmentSource,
BadgeAlign,
BadgeFieldType,
PositionCategory,
Role,
)
__all__ = [
"Account",
"Artist",
"Assignment",
"AssignmentSource",
"Availability",
"BadgeAlign",
"BadgeField",
"BadgeFieldType",
"BadgeTemplate",
"DayPart",
"Edition",
"MagicLinkToken",
"Position",
"PositionCategory",
"Role",
"Shift",
"TimestampMixin",
"Volunteer",
"VolunteerArtist",
"VolunteerCompanionWish",
"VolunteerPositionWish",
"local_now",
]