Formats activables par evenement + cadre impose exclut strips

- Toggles formats (10x15, 15x20, strip) par evenement
- Strip desactive masque le bouton pellicule sur l'accueil
- Cadre impose/defaut s'applique uniquement sur 10x15 et 15x20 (pas strip)
- Upload cadre evenement le copie dans les deux formats automatiquement
- Section cadres admin simplifiee (un seul bloc au lieu de 3)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 00:45:47 +02:00
parent 77b1127816
commit 6bbcf85e52
5 changed files with 93 additions and 53 deletions

View File

@@ -45,6 +45,7 @@ def creer_evenement(nom: str, **kwargs) -> dict:
"couleur_primaire": kwargs.get("couleur_primaire", "#e91e63"),
"couleur_secondaire": kwargs.get("couleur_secondaire", "#ffffff"),
"media_accueil": kwargs.get("media_accueil"),
"formats_actifs": kwargs.get("formats_actifs", ["10x15", "15x20", "strip"]),
"cadres": {},
}
_chemin_event(event_id).write_text(json.dumps(event, ensure_ascii=False, indent=2), "utf-8")
@@ -97,6 +98,7 @@ def activer_evenement(event_id: str) -> dict | None:
"couleur_primaire": event.get("couleur_primaire", "#e91e63"),
"couleur_secondaire": event.get("couleur_secondaire", "#ffffff"),
"media_accueil": event.get("media_accueil"),
"formats_actifs": event.get("formats_actifs", ["10x15", "15x20", "strip"]),
}
})
log.info(f"Evenement active : {event['nom']} ({event_id})")
@@ -135,7 +137,10 @@ def set_cadre_event(event_id: str, format_papier: str, mode: str, cadre: str | N
def cadre_actif_pour_impression(format_papier: str) -> tuple[str | None, str]:
"""Retourne (nom_cadre, mode) en tenant compte de l'evenement actif.
mode: 'aucun', 'disponible', 'impose', 'defaut'
Strips exclus du cadre impose/defaut.
"""
if format_papier == "strip":
return None, "aucun"
config = charger_config()
event_id = config.get("evenement", {}).get("event_id")
if not event_id: