Badges : format dérivé de l'image importée, postes avec horaire et référent
- Le format du badge n'est plus fixé à CR80 : il est déduit des pixels de l'image du recto à l'import (résolution supposée 300 dpi, app/badges/pdf.py:image_size_mm), stocké sur BadgeTemplate (migration 0012). L'éditeur (BadgesPage.tsx) et la génération PDF s'alignent sur ce format réel ; CR80 reste le repère par défaut tant qu'aucune image n'est importée. Le verso est ajusté sans déformation (preserveAspectRatio). - Le champ « Postes affectés » liste désormais une ligne par créneau (triées chronologiquement) : nom du poste + horaire, et le référent du poste s'il y en a un et que ce n'est pas le bénévole badgé lui-même. Texte multi-lignes pris en charge par la génération PDF (découpe sur `\n`, hauteur de ligne calculée en mm) et par l'aperçu de l'éditeur. - Corrige au passage un bug d'unités dans le positionnement vertical du texte (police en points confondue avec des millimètres). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
b7fc80a7dc
commit
579ea5d9db
@@ -375,7 +375,13 @@ class BadgeTemplate(TimestampMixin, table=True):
|
||||
"""Recto/verso du badge d'une édition. Une ligne par édition (créée à la
|
||||
demande). Le verso (`back_image`) est le même pour tous les bénévoles ;
|
||||
le recto combine `front_image` (fond) et les `BadgeField` positionnés
|
||||
dessus. Images stockées en base (pas de volume de fichiers à gérer)."""
|
||||
dessus. Images stockées en base (pas de volume de fichiers à gérer).
|
||||
|
||||
Le format du badge (`front_image_width_mm`/`height_mm`) est **dérivé de
|
||||
l'image du recto** à l'import (voir `app/badges/pdf.py:image_size_mm`,
|
||||
résolution supposée 300 dpi) plutôt qu'un format fixe imposé — `None`
|
||||
tant qu'aucune image n'a été importée (l'éditeur retombe alors sur le
|
||||
format CR80 par défaut, voir `DEFAULT_BADGE_WIDTH_MM`)."""
|
||||
|
||||
__tablename__ = "badge_template"
|
||||
|
||||
@@ -385,6 +391,8 @@ class BadgeTemplate(TimestampMixin, table=True):
|
||||
)
|
||||
front_image: bytes | None = Field(default=None, sa_column=Column(LargeBinary))
|
||||
front_image_content_type: str | None = None
|
||||
front_image_width_mm: float | None = None
|
||||
front_image_height_mm: float | None = None
|
||||
back_image: bytes | None = Field(default=None, sa_column=Column(LargeBinary))
|
||||
back_image_content_type: str | None = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user