Build and deploy / test-python (push) Successful in 11m34s
Build and deploy / test-js (push) Successful in 1m13s
Build and deploy / lint-python (push) Successful in 5m54s
Build and deploy / lint-js (push) Failing after 1m41s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Build and deploy / sonarqube (push) Failing after 4m49s
La route de retrait de thème (theme_id vide) fait partie intégrante de la fonctionnalité "Aucun modèle" du commit précédent — fichier omis par erreur du git add initial. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
from flask import jsonify, request
|
|
from werkzeug.wrappers import Response
|
|
|
|
import db
|
|
import document_engine
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/document/<slug>/theme/apply", methods=["POST"])
|
|
def document_theme_apply(slug: str) -> Response | tuple[Response, int]:
|
|
"""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
|
|
remplacé par le contenu de démonstration du thème (voir
|
|
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).
|
|
|
|
`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
|
|
mode = payload.get("mode", "keep_content")
|
|
if mode not in ("keep_content", "template_content"):
|
|
return jsonify({"error": "mode invalide"}), 400
|
|
|
|
db.set_document_theme(slug, theme_id)
|
|
if mode == "template_content":
|
|
document_engine.replace_document_content(slug, theme["seed_pages"])
|
|
|
|
return jsonify({"ok": True, "theme_id": theme_id})
|