from flask import jsonify, redirect, request, url_for from werkzeug.wrappers import Response import screens from core.flask_app import app @app.route("/game//scene-objects//delete", methods=["POST"]) def scene_object_delete(slug: str, object_id: int) -> Response | tuple[Response, int]: """Supprime un objet de scène — bouton 🗑️ du panneau de propriétés (voir templates/scene_edit.html), toujours pour l'objet SÉLECTIONNÉ (le seul dont ce bouton est affiché). Appelée en AJAX (deleteSceneObject(), static/js/scenes/scene-editor.js) plutôt qu'en soumission de formulaire classique — sinon même "rechargé en douceur" par pjax.js (qui intercepte tout
, voir son commentaire d'en-tête), ça remplaçait TOUT
(canevas + onglets Collision/Quêtes/Événements), perceptible comme un "vidage" de l'éditeur le temps du remplacement.""" obj = screens.get_scene_object(slug, object_id) if not obj: if request.headers.get("X-Requested-With") == "fetch": return jsonify({"ok": False}), 404 return redirect(url_for("index")) screen_id = obj["scene_id"] screens.delete_scene_object(slug, object_id) if request.headers.get("X-Requested-With") == "fetch": return jsonify({"ok": True, "id": object_id}) # Secours pour tout appelant non-JS (aucun connu actuellement). return redirect(url_for("screen_edit", slug=slug, screen_id=screen_id))