26 lines
1.2 KiB
Python
26 lines
1.2 KiB
Python
from flask import request, redirect, url_for, abort
|
|
|
|
import screens
|
|
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/game/<slug>/elements/<int:parent_id>/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))
|