From e6a0b268fffc1cb970244f49aaf790bcba61d8ba Mon Sep 17 00:00:00 2001 From: Jules Date: Fri, 25 Sep 2026 00:24:47 +0200 Subject: [PATCH] Endpoint /api/imprimer-fichier : impression par upload (pour galerie en ligne) Co-Authored-By: Claude Opus 4.6 --- backend/main.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/backend/main.py b/backend/main.py index 9b20b41..b64a082 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1618,6 +1618,28 @@ async def api_imprimer(donnees: dict): return resultat +@app.post("/api/imprimer-fichier") +async def api_imprimer_fichier(fichier: UploadFile = File(...), copies: int = 1, format_papier: str | None = None): + """Impression d'un fichier uploadé (utilisé par la galerie en ligne).""" + config = charger_config() + copies_max = config.get("impression", {}).get("copies_max", 5) + copies = max(1, min(copies, copies_max)) + tmp = DOSSIER_EXPORTS / f"_galerie_{fichier.filename}" + try: + data = await fichier.read() + tmp.write_bytes(data) + resultat = imprimer(tmp, copies=copies, format_papier=format_papier) + except Exception as e: + log.error(f"Erreur impression fichier uploade : {e}") + _log_impression(fichier.filename, copies, format_papier, False, str(e)) + return {"succes": False, "erreur": "erreur_impression", "message": str(e)} + finally: + tmp.unlink(missing_ok=True) + succes = resultat.get("succes", False) + _log_impression(fichier.filename, copies, format_papier, succes, resultat.get("job", "")) + return resultat + + # --- API Consommables --- @app.get("/api/consommables")