Ajoute l'assistant IA "Ruby" (Claude + Scenario) et corrige plusieurs bugs de la scène
Intègre un chat IA capable de manipuler la scène via les mêmes fonctions que l'éditeur manuel (objets, variables, déclencheurs, images générées), avec conversations multiples par écran façon Claude. Corrige au passage le rafraîchissement pjax hors-ordre, l'onglet IA/déclencheurs vide après sélection d'un objet, la comparaison de booléens dans les conditions, et le blocage du glisser-déposer hors du cadre caméra après un redimensionnement de fond par l'IA. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
ab6635eee0
commit
b07b231a61
@@ -1,5 +1,6 @@
|
||||
from flask import request, redirect, url_for, jsonify
|
||||
from flask import g, request, redirect, url_for, jsonify, abort
|
||||
|
||||
import auth
|
||||
import screens
|
||||
|
||||
from core.flask_app import app
|
||||
@@ -27,12 +28,23 @@ def scene_object_add(slug, screen_id):
|
||||
kind = request.form.get("kind", "personnage")
|
||||
forge_character = request.form.get("forge_character")
|
||||
background_slug = request.form.get("background_slug")
|
||||
asset_id = request.form.get("asset_id", type=int)
|
||||
if forge_character:
|
||||
forbid_admin_only_character(forge_character)
|
||||
if background_slug:
|
||||
forbid_admin_only_background(background_slug)
|
||||
image_url = None
|
||||
if asset_id:
|
||||
# "Mes assets" (voir auth/user_assets_dir.py) : isolation stricte
|
||||
# par propriétaire, même esprit que les projets (core/auth_guard.py)
|
||||
# — jamais poser l'asset d'un autre compte, même en devinant son id.
|
||||
asset = auth.get_user_asset(asset_id)
|
||||
if not asset or asset["user_id"] != g.current_user["id"]:
|
||||
abort(403)
|
||||
image_url = url_for("serve_user_asset", user_id=asset["user_id"], filename=asset["filename"])
|
||||
new_id = screens.add_scene_object(
|
||||
slug, screen_id, kind=kind, forge_character=forge_character, background_slug=background_slug,
|
||||
slug, screen_id, kind=kind, forge_character=forge_character,
|
||||
background_slug=background_slug, image_url=image_url,
|
||||
)
|
||||
if request.headers.get("X-Requested-With") == "fetch":
|
||||
obj = screens.get_scene_object(slug, new_id)
|
||||
|
||||
Reference in New Issue
Block a user