first commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from . import action_add, action_delete, action_run_data
|
||||
@@ -0,0 +1,35 @@
|
||||
from flask import request, redirect, url_for, abort
|
||||
|
||||
import screens
|
||||
|
||||
from core.flask_app import app
|
||||
|
||||
|
||||
@app.route("/game/<slug>/elements/<int:element_id>/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))
|
||||
@@ -0,0 +1,15 @@
|
||||
from flask import redirect, url_for, abort
|
||||
|
||||
import screens
|
||||
|
||||
from core.flask_app import app
|
||||
|
||||
|
||||
@app.route("/game/<slug>/actions/<int:action_id>/delete", methods=["POST"])
|
||||
def action_delete(slug, action_id):
|
||||
action = screens.get_action(slug, action_id)
|
||||
if not action:
|
||||
abort(404)
|
||||
element = screens.get_element(slug, action["element_id"])
|
||||
screens.delete_action(slug, action_id)
|
||||
return redirect(url_for("screen_edit", slug=slug, screen_id=element["screen_id"], selected=element["id"]))
|
||||
@@ -0,0 +1,17 @@
|
||||
from flask import jsonify
|
||||
|
||||
import screens
|
||||
|
||||
from core.flask_app import app
|
||||
|
||||
|
||||
@app.route("/game/<slug>/actions/<int:action_id>/run-data", methods=["POST"])
|
||||
def action_run_data(slug, action_id):
|
||||
"""Exécuté côté serveur au moment du clic, en mode jouable, pour une
|
||||
action "Modifier une donnée d'un objet" — les actions "Modifier un
|
||||
élément" restent, elles, purement côté client (juste du style CSS)."""
|
||||
action = screens.get_action(slug, action_id)
|
||||
if not action or action.get("action_type") != "modifier_donnee":
|
||||
return jsonify({"ok": False}), 400
|
||||
ok = screens.apply_data_action(slug, action)
|
||||
return jsonify({"ok": ok})
|
||||
Reference in New Issue
Block a user