Files
williamandClaude Sonnet 5 e9d7f560e3
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
Inclut document_theme_apply.py oublié du commit précédent
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>
2026-09-26 15:13:53 +02:00

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})