diff --git a/routes/document/document_theme_apply.py b/routes/document/document_theme_apply.py index c4b4b78c..db65d394 100644 --- a/routes/document/document_theme_apply.py +++ b/routes/document/document_theme_apply.py @@ -8,8 +8,8 @@ from core.flask_app import app @app.route("/document//theme/apply", methods=["POST"]) def document_theme_apply(slug: str) -> Response | tuple[Response, int]: - """Applique un thème visuel au support — voir document_engine/themes/. - `mode` décide du sort du contenu ACTUEL : + """Applique un thème visuel au support, ou le RETIRE — voir + document_engine/themes/. `mode` décide du sort du contenu ACTUEL : - "keep_content" (défaut) : seul le thème change, le contenu du support reste tel quel. - "template_content" : le contenu du support est intégralement @@ -17,9 +17,19 @@ def document_theme_apply(slug: str) -> Response | tuple[Response, int]: document_engine.replace_document_content) — action destructive, dont la confirmation est à la charge du client (voir static/document/js/document-editor.js, aucune confirmation ici - côté serveur : ce n'est pas son rôle).""" + côté serveur : ce n'est pas son rôle). + + `theme_id` vide (retour utilisateur du 26/09/2026 : la modale + propose une carte "Aucun modèle" pour "revenir à un document de + base") retire le thème (`db.remove_document_theme`) et s'arrête là + — jamais de contenu de démonstration à appliquer pour "aucun + modèle", `mode` n'a alors aucun sens et est ignoré.""" payload = request.get_json(force=True) or {} theme_id = str(payload.get("theme_id", "")) + if not theme_id: + db.remove_document_theme(slug) + return jsonify({"ok": True, "theme_id": ""}) + theme = document_engine.get_document_theme_entry(theme_id) if theme is None: return jsonify({"error": "thème introuvable"}), 404