from flask import request, redirect, url_for, abort import screens from core.flask_app import app @app.route("/game//elements//children/add", methods=["POST"]) def element_add_child(slug, parent_id): """Ajoute un élément PHYSIQUEMENT à l'intérieur d'un conteneur, d'un répéteur de données ou d'un groupe de champs déjà posé sur l'écran.""" parent = screens.get_element(slug, parent_id) if not parent: abort(404) widget = request.form.get("widget", "conteneur") from_catalogue = widget == "__catalogue__" element_type_id = request.form.get("element_type_id") or None if from_catalogue else None if from_catalogue and element_type_id: types = {t["id"]: t for t in screens.list_element_types(slug)} et = types.get(int(element_type_id)) widget = et["default_widget"] if et else "conteneur" elif from_catalogue: return redirect(url_for("screen_edit", slug=slug, screen_id=parent["screen_id"], selected=parent_id)) new_id = screens.add_element(slug, parent["screen_id"], widget, element_type_id, parent_id=parent_id) return redirect(url_for("screen_edit", slug=slug, screen_id=parent["screen_id"], selected=new_id))