from flask import request, redirect, url_for, abort import screens from core.flask_app import app @app.route("/game//elements//actions/add", methods=["POST"]) def action_add(slug, element_id): element = screens.get_element(slug, element_id) if not element: abort(404) trigger_event = screens._trigger_for(element["widget"], element["attributes"]) action_type = request.form.get("action_type", "rien") def _int_or_none(key): raw = request.form.get(key) try: return int(raw) if raw not in (None, "") else None except (TypeError, ValueError): return None screens.add_action( slug, element_id, trigger_event, action_type, target_screen_id=_int_or_none("target_screen_id"), target_element_id=_int_or_none("target_element_id"), element_property=request.form.get("element_property") or None, element_value=request.form.get("element_value") or None, target_definition_id=_int_or_none("target_definition_id"), target_row_id=_int_or_none("target_row_id"), target_field=request.form.get("target_field") or None, data_operation=request.form.get("data_operation") or None, data_value=request.form.get("data_value") or None, ) return redirect(url_for("screen_edit", slug=slug, screen_id=element["screen_id"], selected=element_id))