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>
21 lines
848 B
Python
21 lines
848 B
Python
import os
|
|
import uuid
|
|
|
|
from .create_user_asset import create_user_asset
|
|
from .user_assets_dir import user_assets_dir
|
|
|
|
|
|
def save_user_asset(user_id, content, ext, original_name=None, source="upload"):
|
|
"""Écrit `content` (bytes) sur disque + crée la ligne "Mes assets" —
|
|
factorisé pour être partagé par l'upload manuel
|
|
(routes/assets/upload_user_asset.py) ET la génération IA
|
|
(ai/tools.py::_dispatch_add_generated_image), jamais dupliqué entre
|
|
les deux. Renvoie (asset_id, filename)."""
|
|
filename = uuid.uuid4().hex + ext
|
|
asset_dir = user_assets_dir(user_id)
|
|
os.makedirs(asset_dir, exist_ok=True)
|
|
with open(os.path.join(asset_dir, filename), "wb") as f:
|
|
f.write(content)
|
|
asset_id = create_user_asset(user_id, filename, original_name=original_name, source=source)
|
|
return asset_id, filename
|