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
@@ -2,6 +2,8 @@
|
||||
|
||||
import base64
|
||||
|
||||
import pytest
|
||||
|
||||
from app.models import Role
|
||||
from tests.factories import dt_at, make_position, make_shift, make_volunteer
|
||||
|
||||
@@ -49,6 +51,20 @@ def test_template_starts_empty(client, edition):
|
||||
assert body["has_front_image"] is False
|
||||
assert body["has_back_image"] is False
|
||||
assert body["fields"] == []
|
||||
# Format CR80 par défaut tant qu'aucune image n'a été importée.
|
||||
assert body["badge_width_mm"] == 85.6
|
||||
assert body["badge_height_mm"] == 54.0
|
||||
|
||||
|
||||
def test_uploading_front_image_derives_the_badge_format_from_its_pixels(client, edition):
|
||||
resp = client.put(
|
||||
f"{_badges_url(edition)}/template/front-image",
|
||||
files={"file": ("front.png", _PNG, "image/png")},
|
||||
)
|
||||
body = resp.json()
|
||||
# PNG 1×1 px, résolution supposée 300 dpi ⇒ 25,4/300 mm de côté.
|
||||
assert body["badge_width_mm"] == pytest.approx(25.4 / 300)
|
||||
assert body["badge_height_mm"] == pytest.approx(25.4 / 300)
|
||||
|
||||
|
||||
def test_uploading_front_and_back_images(client, edition):
|
||||
|
||||
Reference in New Issue
Block a user