Files
Forge-Engine/routes/assets/upload_user_asset.py
T
williamandClaude Sonnet 5 b07b231a61
Build and deploy / test-python (push) Successful in 12m24s
Build and deploy / test-js (push) Successful in 1m9s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
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>
2026-09-09 19:40:31 +02:00

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),
})