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>
28 lines
1.0 KiB
Python
28 lines
1.0 KiB
Python
import os
|
|
|
|
from flask import g, request, jsonify, url_for
|
|
|
|
import auth
|
|
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/assets/upload", methods=["POST"])
|
|
def upload_user_asset():
|
|
""""Mes assets" (voir auth/user_assets_dir.py) : mirroir de
|
|
routes/uploads/upload_file.py, mais stocké PAR COMPTE plutôt que par
|
|
jeu, pour être réutilisable dans n'importe quel projet du même
|
|
compte. Écriture disque + ligne base factorisées dans
|
|
auth.save_user_asset (partagé avec la génération IA, voir
|
|
ai/tools.py::_dispatch_add_generated_image)."""
|
|
f = request.files.get("file")
|
|
if not f or not f.filename:
|
|
return jsonify({"error": "Aucun fichier reçu"}), 400
|
|
ext = "".join(c for c in os.path.splitext(f.filename)[1].lower() if c.isalnum() or c == ".")[:10]
|
|
user_id = g.current_user["id"]
|
|
asset_id, filename = auth.save_user_asset(user_id, f.read(), ext, original_name=f.filename, source="upload")
|
|
return jsonify({
|
|
"id": asset_id,
|
|
"url": url_for("serve_user_asset", user_id=user_id, filename=filename),
|
|
})
|