from flask import render_template import db import document_engine from core.flask_app import app @app.route("/document//edit") def document_edit(slug: str) -> str: """Éditeur du support — route directe, sans page intermédiaire (un support = un projet = un document, voir docs/plan/PLAN.md). Contraste avec l'environnement 2D (clic sur une carte -> game_dashboard qui liste ses écrans -> éditeur de scène) : ici la carte "Mes formations" mène directement ici. Les attributs de chaque élément sont revalidés (document_engine. sanitize_element_attributes) avant d'atteindre le client — jamais les valeurs brutes stockées telles quelles : un élément dont le schéma a évolué depuis sa création (ex. le mini-jeu Scénario, passé d'une liste plate à un arbre de décision) ferait sinon planter silencieusement le panneau Propriétés côté client, qui suppose la forme ACTUELLE (bug réel constaté le 21/09/2026).""" support = db.support_meta(slug) elements = [ {**el, "attributes": document_engine.sanitize_element_attributes(el["kind"], el["attributes"])} for el in document_engine.list_document_elements(slug) ] return render_template( "document/document_edit.html", support=support, elements=elements, rendered_document=document_engine.render_document(elements), element_library=document_engine.ELEMENT_LIBRARY, element_kind_labels=document_engine.ELEMENT_KIND_LABELS, )