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:
@@ -25,18 +25,17 @@ def distribuer_photo(chemin_photo: Path, imprimee: bool = False):
|
||||
daemon=True,
|
||||
).start()
|
||||
|
||||
# Verifier si on sauvegarde tout ou seulement les imprimees
|
||||
sous_dossier = None
|
||||
if not dest.get("sauvegarder_tout", True) and not imprimee:
|
||||
log.info(f"Photo non imprimee, pas de distribution : {chemin_photo.name}")
|
||||
return
|
||||
sous_dossier = "non_imprimees"
|
||||
|
||||
# Cle USB
|
||||
if dest.get("cle_usb", False):
|
||||
copier_usb(chemin_photo, dest.get("chemin_usb", "/media/usb"))
|
||||
copier_usb(chemin_photo, dest.get("chemin_usb", "/media/usb"), sous_dossier)
|
||||
|
||||
# FTP
|
||||
if dest.get("ftp", False):
|
||||
envoyer_ftp(chemin_photo, dest)
|
||||
envoyer_ftp(chemin_photo, dest, sous_dossier)
|
||||
|
||||
# Incrementer le compteur
|
||||
compteur = config.get("compteur", {})
|
||||
@@ -45,7 +44,7 @@ def distribuer_photo(chemin_photo: Path, imprimee: bool = False):
|
||||
mettre_a_jour_config({"compteur": compteur})
|
||||
|
||||
|
||||
def copier_usb(chemin_photo: Path, chemin_usb: str):
|
||||
def copier_usb(chemin_photo: Path, chemin_usb: str, sous_dossier: str | None = None):
|
||||
"""Copie une photo sur la cle USB."""
|
||||
dossier_usb = Path(chemin_usb)
|
||||
if not dossier_usb.exists():
|
||||
@@ -53,24 +52,28 @@ def copier_usb(chemin_photo: Path, chemin_usb: str):
|
||||
return False
|
||||
|
||||
dossier_dest = dossier_usb / "photobooth"
|
||||
dossier_dest.mkdir(exist_ok=True)
|
||||
if sous_dossier:
|
||||
dossier_dest = dossier_dest / sous_dossier
|
||||
dossier_dest.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
try:
|
||||
shutil.copy2(chemin_photo, dossier_dest / chemin_photo.name)
|
||||
log.info(f"Photo copiee sur USB : {chemin_photo.name}")
|
||||
log.info(f"Photo copiee sur USB : {chemin_photo.name} ({sous_dossier or 'root'})")
|
||||
return True
|
||||
except OSError as e:
|
||||
log.error(f"Erreur copie USB : {e}")
|
||||
return False
|
||||
|
||||
|
||||
def envoyer_ftp(chemin_photo: Path, config_dest: dict):
|
||||
def envoyer_ftp(chemin_photo: Path, config_dest: dict, sous_dossier: str | None = None):
|
||||
"""Envoie une photo par FTP."""
|
||||
host = config_dest.get("ftp_host", "")
|
||||
port = config_dest.get("ftp_port", 21)
|
||||
user = config_dest.get("ftp_user", "")
|
||||
password = config_dest.get("ftp_password", "")
|
||||
chemin_distant = config_dest.get("ftp_chemin", "/photobooth")
|
||||
if sous_dossier:
|
||||
chemin_distant = f"{chemin_distant}/{sous_dossier}"
|
||||
|
||||
if not host:
|
||||
log.warning("FTP non configure")
|
||||
|
||||
Reference in New Issue
Block a user