diff --git a/backend/main.py b/backend/main.py
index e348923..448e5a3 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -208,13 +208,18 @@ async def api_imprimantes():
@app.post("/api/imprimer")
async def api_imprimer(donnees: dict):
nom = donnees.get("photo", "")
+ copies = donnees.get("copies", 1)
+ # Limiter au max configure
+ config = charger_config()
+ copies_max = config.get("impression", {}).get("copies_max", 5)
+ copies = max(1, min(copies, copies_max))
# Chercher dans exports d'abord, puis photos
chemin = DOSSIER_EXPORTS / nom
if not chemin.exists():
chemin = DOSSIER_PHOTOS / nom
if not chemin.exists():
return JSONResponse({"erreur": "Photo introuvable"}, status_code=404)
- ok = imprimer(chemin)
+ ok = imprimer(chemin, copies=copies)
if ok:
distribuer_photo(chemin, imprimee=True)
return {"succes": ok}
diff --git a/data/config.json b/data/config.json
index 57266a3..cb837bf 100644
--- a/data/config.json
+++ b/data/config.json
@@ -45,7 +45,7 @@
},
"impression": {
"imprimante": null,
- "copies": 1,
+ "copies_max": 5,
"format": "10x15"
},
"cadres": {
diff --git a/frontend/css/style.css b/frontend/css/style.css
index fc8793e..55f1277 100644
--- a/frontend/css/style.css
+++ b/frontend/css/style.css
@@ -369,6 +369,55 @@ html, body {
font-size: 2.5rem;
}
+/* Choix exemplaires impression */
+.form-impression {
+ display: flex;
+ gap: 1rem;
+ align-items: center;
+ margin: 1rem 0;
+}
+
+.exemplaires-choix {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+.btn-exemplaire {
+ width: 48px;
+ height: 48px;
+ border-radius: 50%;
+ border: 2px solid var(--primaire);
+ background: transparent;
+ color: var(--primaire);
+ font-size: 1.5rem;
+ font-weight: 700;
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition: var(--transition);
+}
+
+.btn-exemplaire:active {
+ background: var(--primaire);
+ color: #fff;
+ transform: scale(0.9);
+}
+
+#nb-exemplaires {
+ font-size: 2.5rem;
+ font-weight: 700;
+ color: var(--texte);
+ min-width: 50px;
+ text-align: center;
+}
+
+.exemplaires-label {
+ color: var(--texte-secondaire);
+ font-size: 1rem;
+}
+
.form-email {
display: flex;
gap: 0.8rem;
diff --git a/frontend/index.html b/frontend/index.html
index c46185f..c066878 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -77,7 +77,7 @@