mirror of
https://github.com/langgenius/dify.git
synced 2026-05-10 05:56:31 +08:00
refactor(app_asset): remove file upload resource and related methods
- Deleted `AppAssetFileResource` class and its associated file upload logic. - Removed the `create_file` method from `AppAssetService` to streamline asset management. - Updated `AppAssetBatchUploadResource` for improved readability by condensing method calls.
This commit is contained in:
parent
c3decbab32
commit
4448737bd8
@ -4,7 +4,6 @@ from pydantic import BaseModel, Field, field_validator
|
||||
|
||||
from controllers.console import console_ns
|
||||
from controllers.console.app.error import (
|
||||
AppAssetFileRequiredError,
|
||||
AppAssetNodeNotFoundError,
|
||||
AppAssetPathConflictError,
|
||||
)
|
||||
@ -131,31 +130,6 @@ class AppAssetFolderResource(Resource):
|
||||
raise AppAssetPathConflictError()
|
||||
|
||||
|
||||
@console_ns.route("/apps/<string:app_id>/assets/files")
|
||||
class AppAssetFileResource(Resource):
|
||||
@setup_required
|
||||
@login_required
|
||||
@account_initialization_required
|
||||
@get_app_model(mode=[AppMode.ADVANCED_CHAT, AppMode.WORKFLOW])
|
||||
def post(self, app_model: App):
|
||||
current_user, _ = current_account_with_tenant()
|
||||
|
||||
file = request.files.get("file")
|
||||
if not file:
|
||||
raise AppAssetFileRequiredError()
|
||||
|
||||
payload = CreateFilePayload.model_validate(request.form.to_dict())
|
||||
content = file.read()
|
||||
|
||||
try:
|
||||
node = AppAssetService.create_file(app_model, current_user.id, payload.name, content, payload.parent_id)
|
||||
return node.model_dump(), 201
|
||||
except AppAssetParentNotFoundError:
|
||||
raise AppAssetNodeNotFoundError()
|
||||
except ServicePathConflictError:
|
||||
raise AppAssetPathConflictError()
|
||||
|
||||
|
||||
@console_ns.route("/apps/<string:app_id>/assets/files/<string:node_id>")
|
||||
class AppAssetFileDetailResource(Resource):
|
||||
@setup_required
|
||||
@ -339,9 +313,7 @@ class AppAssetBatchUploadResource(Resource):
|
||||
payload = BatchUploadPayload.model_validate(console_ns.payload or {})
|
||||
|
||||
try:
|
||||
result_children = AppAssetService.batch_create_from_tree(
|
||||
app_model, current_user.id, payload.children
|
||||
)
|
||||
result_children = AppAssetService.batch_create_from_tree(app_model, current_user.id, payload.children)
|
||||
return {"children": [child.model_dump() for child in result_children]}, 201
|
||||
except AppAssetParentNotFoundError:
|
||||
raise AppAssetNodeNotFoundError()
|
||||
|
||||
@ -223,47 +223,6 @@ class AppAssetService:
|
||||
|
||||
return node
|
||||
|
||||
# FIXME(Mairuis): migrate to get_file_upload_url / get_file_upload_urls API
|
||||
@staticmethod
|
||||
def create_file(
|
||||
app_model: App,
|
||||
account_id: str,
|
||||
name: str,
|
||||
content: bytes,
|
||||
parent_id: str | None = None,
|
||||
) -> AppAssetNode:
|
||||
with AppAssetService._lock(app_model.id):
|
||||
with Session(db.engine, expire_on_commit=False) as session:
|
||||
assets = AppAssetService.get_or_create_assets(session, app_model, account_id)
|
||||
tree = assets.asset_tree
|
||||
|
||||
node_id = str(uuid4())
|
||||
node = AppAssetNode.create_file(node_id, name, parent_id, len(content))
|
||||
|
||||
try:
|
||||
tree.add(node)
|
||||
except TreeParentNotFoundError as e:
|
||||
raise AppAssetParentNotFoundError(str(e)) from e
|
||||
except TreePathConflictError as e:
|
||||
raise AppAssetPathConflictError(str(e)) from e
|
||||
|
||||
storage_key = AssetPaths.draft_file(app_model.tenant_id, app_model.id, node_id)
|
||||
storage.save(storage_key, content)
|
||||
|
||||
assets.asset_tree = tree
|
||||
assets.updated_by = account_id
|
||||
session.commit()
|
||||
|
||||
cache_key = AppAssetService._draft_storage_key_for_node(
|
||||
app_model.tenant_id,
|
||||
app_model.id,
|
||||
assets.id,
|
||||
node,
|
||||
)
|
||||
AppAssetService._clear_draft_download_cache([cache_key])
|
||||
|
||||
return node
|
||||
|
||||
@staticmethod
|
||||
def get_file_content(app_model: App, account_id: str, node_id: str) -> bytes:
|
||||
with Session(db.engine) as session:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user