Gestion evenements + cadres par event + fix cadre paysage + dossier non-imprimees
- CRUD evenements : creer, activer, editer, supprimer dans panneau admin - Cadres specifiques par evenement (aucun/disponible/defaut/impose) - Fix cadre paysage deformé : rotation auto si orientation ne correspond pas - Photos non imprimees vont dans sous-dossier "non_imprimees" (USB/FTP) au lieu d'etre ignorees ; booth recoit toujours toutes les photos Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -77,7 +77,7 @@ def _crop_to(img, largeur: int, hauteur: int):
|
||||
|
||||
def _preparer_image(chemin: Path, largeur: int, hauteur: int,
|
||||
format_papier: str | None = None, cadre: str | None = None,
|
||||
orientation: str = "paysage") -> Path:
|
||||
orientation: str = "paysage", event_id: str | None = None) -> Path:
|
||||
"""
|
||||
Pivote si nécessaire, recadre aux dimensions exactes (cover crop),
|
||||
applique le cadre, sauvegarde en temp.
|
||||
@@ -101,7 +101,7 @@ def _preparer_image(chemin: Path, largeur: int, hauteur: int,
|
||||
img = _crop_to(img, largeur, hauteur)
|
||||
|
||||
if cadre and format_papier:
|
||||
img = appliquer_cadre_impression(img, format_papier, cadre)
|
||||
img = appliquer_cadre_impression(img, format_papier, cadre, event_id=event_id)
|
||||
|
||||
tmp = tempfile.NamedTemporaryFile(suffix=".jpg", delete=False)
|
||||
img.save(tmp.name, "JPEG", quality=95, dpi=(300, 300))
|
||||
@@ -221,11 +221,20 @@ def imprimer(
|
||||
cadre = cadre_override if cadre_override is not None else conf_imp.get("cadres_actifs", {}).get(fmt_base)
|
||||
orientation = conf_imp.get("orientations", {}).get(fmt_base, "portrait")
|
||||
|
||||
event_id = config.get("evenement", {}).get("event_id")
|
||||
if event_id and cadre_override is None:
|
||||
from backend.evenements import cadre_actif_pour_impression
|
||||
ev_cadre, ev_mode = cadre_actif_pour_impression(fmt_base)
|
||||
if ev_mode == "impose" and ev_cadre:
|
||||
cadre = ev_cadre
|
||||
elif ev_mode == "defaut" and ev_cadre and not cadre:
|
||||
cadre = ev_cadre
|
||||
|
||||
if not chemin_photo.exists():
|
||||
log.error(f"Fichier introuvable : {chemin_photo}")
|
||||
return {"succes": False, "erreur": ERREUR_FICHIER, "message": "Fichier photo introuvable"}
|
||||
|
||||
chemin_print = _preparer_image(chemin_photo, largeur, hauteur, fmt_base, cadre, orientation)
|
||||
chemin_print = _preparer_image(chemin_photo, largeur, hauteur, fmt_base, cadre, orientation, event_id=event_id)
|
||||
tmp_a_supprimer = [chemin_print] if chemin_print != chemin_photo else []
|
||||
|
||||
px_page = fmt.get("px_page")
|
||||
|
||||
Reference in New Issue
Block a user