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
@@ -0,0 +1,35 @@
|
||||
"""Format du badge dérivé de l'image de fond du recto
|
||||
|
||||
Revision ID: 0012_badge_template_size
|
||||
Revises: 0011_badge_template
|
||||
Create Date: 2026-09-21
|
||||
|
||||
`badge_template.front_image_width_mm`/`front_image_height_mm` : taille
|
||||
physique (mm) déduite des pixels de l'image importée (résolution supposée
|
||||
300 dpi, voir `app/badges/pdf.py:image_size_mm`) — remplace le format CR80
|
||||
fixe pour la génération du PDF (`app/api/badges.py`).
|
||||
"""
|
||||
|
||||
from collections.abc import Sequence
|
||||
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
revision: str = "0012_badge_template_size"
|
||||
down_revision: str | None = "0011_badge_template"
|
||||
branch_labels: str | Sequence[str] | None = None
|
||||
depends_on: str | Sequence[str] | None = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.add_column(
|
||||
"badge_template", sa.Column("front_image_width_mm", sa.Float(), nullable=True)
|
||||
)
|
||||
op.add_column(
|
||||
"badge_template", sa.Column("front_image_height_mm", sa.Float(), nullable=True)
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_column("badge_template", "front_image_height_mm")
|
||||
op.drop_column("badge_template", "front_image_width_mm")
|
||||
Reference in New Issue
Block a user