from flask import jsonify, request from werkzeug.wrappers import Response import db import screens from core.flask_app import app @app.route("/game//scene-objects//quiz-config", methods=["POST"]) def scene_object_quiz_config(slug: str, object_id: int) -> Response | tuple[Response, int]: """Réglages "❓ Boîte à quiz" (plein écran/minuteur/modèle, voir screens/rendering/quiz_box_config.py) — mirror exact de routes/scenes/scene_object_dialogue_box_style.py.""" body = request.get_json(silent=True) or {} config = screens.set_scene_object_quiz_config(slug, object_id, body.get("config")) if config is None: return jsonify({"error": "objet introuvable"}), 404 # Un modèle change la STRUCTURE du balisage, pas juste une classe CSS # (voir screens/rendering/quiz_box_templates.py) — renvoyer le HTML # déjà rendu permet à scene-editor.js de remplacer l'aperçu en un # coup, plutôt que de deviner quelle balise ajouter/retirer côté # client. obj = screens.get_scene_object(slug, object_id) obj = db.assert_not_none(obj, "object_id valide : set_scene_object_quiz_config a renvoye une config non-None") return jsonify({"config": config, "rendered_html": screens.render_scene_object(obj)})