diff --git a/agent/canvas.py b/agent/canvas.py index bc7a45e3e..aeb579443 100644 --- a/agent/canvas.py +++ b/agent/canvas.py @@ -298,8 +298,6 @@ class Canvas(Graph): for kk, vv in kwargs["webhook_payload"].items(): self.components[k]["obj"].set_output(kk, vv) - self.components[k]["obj"].reset(True) - for k in kwargs.keys(): if k in ["query", "user_id", "files"] and kwargs[k]: if k == "files": diff --git a/api/apps/__init__.py b/api/apps/__init__.py index 77670f4d8..a53f67c06 100644 --- a/api/apps/__init__.py +++ b/api/apps/__init__.py @@ -159,7 +159,7 @@ def login_required(func: Callable[P, Awaitable[T]]) -> Callable[P, Awaitable[T]] @wraps(func) async def wrapper(*args: P.args, **kwargs: P.kwargs) -> T: - if not current_user or not session.get("_user_id"): + if not current_user:# or not session.get("_user_id"): raise Unauthorized() else: return await current_app.ensure_async(func)(*args, **kwargs) diff --git a/api/apps/canvas_app.py b/api/apps/canvas_app.py index 847c7bd16..16035f845 100644 --- a/api/apps/canvas_app.py +++ b/api/apps/canvas_app.py @@ -243,7 +243,7 @@ async def reset(): @manager.route("/upload/", methods=["POST"]) # noqa: F821 -def upload(canvas_id): +async def upload(canvas_id): e, cvs = UserCanvasService.get_by_canvas_id(canvas_id) if not e: return get_data_error_result(message="canvas not found.") @@ -309,7 +309,8 @@ def upload(canvas_id): except Exception as e: return server_error_response(e) - file = request.files['file'] + files = await request.files + file = files['file'] try: DocumentService.check_doc_health(user_id, file.filename) return get_json_result(data=structured(file.filename, filename_type(file.filename), file.read(), file.content_type)) diff --git a/api/apps/document_app.py b/api/apps/document_app.py index 0be7243f3..f227a3918 100644 --- a/api/apps/document_app.py +++ b/api/apps/document_app.py @@ -51,14 +51,16 @@ from common import settings @manager.route("/upload", methods=["POST"]) # noqa: F821 @login_required @validate_request("kb_id") -def upload(): - kb_id = request.form.get("kb_id") +async def upload(): + form = await request.form + kb_id = form.get("kb_id") if not kb_id: return get_json_result(data=False, message='Lack of "KB ID"', code=RetCode.ARGUMENT_ERROR) - if "file" not in request.files: + files = await request.files + if "file" not in files: return get_json_result(data=False, message="No file part!", code=RetCode.ARGUMENT_ERROR) - file_objs = request.files.getlist("file") + file_objs = files.getlist("file") for file_obj in file_objs: if file_obj.filename == "": return get_json_result(data=False, message="No file selected!", code=RetCode.ARGUMENT_ERROR) @@ -85,12 +87,13 @@ def upload(): @manager.route("/web_crawl", methods=["POST"]) # noqa: F821 @login_required @validate_request("kb_id", "name", "url") -def web_crawl(): - kb_id = request.form.get("kb_id") +async def web_crawl(): + form = await request.form + kb_id = form.get("kb_id") if not kb_id: return get_json_result(data=False, message='Lack of "KB ID"', code=RetCode.ARGUMENT_ERROR) - name = request.form.get("name") - url = request.form.get("url") + name = form.get("name") + url = form.get("url") if not is_valid_url(url): return get_json_result(data=False, message="The URL format is invalid", code=RetCode.ARGUMENT_ERROR) e, kb = KnowledgebaseService.get_by_id(kb_id) @@ -587,17 +590,18 @@ async def get_image(image_id): @manager.route("/upload_and_parse", methods=["POST"]) # noqa: F821 @login_required @validate_request("conversation_id") -def upload_and_parse(): - if "file" not in request.files: +async def upload_and_parse(): + files = await request.file + if "file" not in files: return get_json_result(data=False, message="No file part!", code=RetCode.ARGUMENT_ERROR) - file_objs = request.files.getlist("file") + file_objs = files.getlist("file") for file_obj in file_objs: if file_obj.filename == "": return get_json_result(data=False, message="No file selected!", code=RetCode.ARGUMENT_ERROR) - doc_ids = doc_upload_and_parse(request.form.get("conversation_id"), file_objs, current_user.id) - + form = await request.form + doc_ids = doc_upload_and_parse(form.get("conversation_id"), file_objs, current_user.id) return get_json_result(data=doc_ids) @@ -645,10 +649,11 @@ async def parse(): txt = FileService.parse_docs([f], current_user.id) return get_json_result(data=txt) - if "file" not in request.files: + files = await request.files + if "file" not in files: return get_json_result(data=False, message="No file part!", code=RetCode.ARGUMENT_ERROR) - file_objs = request.files.getlist("file") + file_objs = files.getlist("file") txt = FileService.parse_docs(file_objs, current_user.id) return get_json_result(data=txt) diff --git a/api/apps/file_app.py b/api/apps/file_app.py index b79222714..8b5383a66 100644 --- a/api/apps/file_app.py +++ b/api/apps/file_app.py @@ -38,17 +38,19 @@ from common import settings @manager.route('/upload', methods=['POST']) # noqa: F821 @login_required # @validate_request("parent_id") -def upload(): - pf_id = request.form.get("parent_id") +async def upload(): + form = await request.form + pf_id = form.get("parent_id") if not pf_id: root_folder = FileService.get_root_folder(current_user.id) pf_id = root_folder["id"] - if 'file' not in request.files: + files = await request.files + if 'file' not in files: return get_json_result( data=False, message='No file part!', code=RetCode.ARGUMENT_ERROR) - file_objs = request.files.getlist('file') + file_objs = files.getlist('file') for file_obj in file_objs: if file_obj.filename == '': diff --git a/api/apps/sdk/doc.py b/api/apps/sdk/doc.py index 6e8969ac0..ad0882eee 100644 --- a/api/apps/sdk/doc.py +++ b/api/apps/sdk/doc.py @@ -69,7 +69,7 @@ class Chunk(BaseModel): @manager.route("/datasets//documents", methods=["POST"]) # noqa: F821 @token_required -def upload(dataset_id, tenant_id): +async def upload(dataset_id, tenant_id): """ Upload documents to a dataset. --- @@ -130,9 +130,11 @@ def upload(dataset_id, tenant_id): type: string description: Processing status. """ - if "file" not in request.files: + form = await request.form + files = await request.files + if "file" not in files: return get_error_data_result(message="No file part!", code=RetCode.ARGUMENT_ERROR) - file_objs = request.files.getlist("file") + file_objs = files.getlist("file") for file_obj in file_objs: if file_obj.filename == "": return get_result(message="No file selected!", code=RetCode.ARGUMENT_ERROR) @@ -155,7 +157,7 @@ def upload(dataset_id, tenant_id): e, kb = KnowledgebaseService.get_by_id(dataset_id) if not e: raise LookupError(f"Can't find the dataset with ID {dataset_id}!") - err, files = FileService.upload_document(kb, file_objs, tenant_id, parent_path=request.form.get("parent_path")) + err, files = FileService.upload_document(kb, file_objs, tenant_id, parent_path=form.get("parent_path")) if err: return get_result(message="\n".join(err), code=RetCode.SERVER_ERROR) # rename key's name diff --git a/api/apps/sdk/files.py b/api/apps/sdk/files.py index f079e8b2d..1682a0285 100644 --- a/api/apps/sdk/files.py +++ b/api/apps/sdk/files.py @@ -35,7 +35,7 @@ from common import settings @manager.route('/file/upload', methods=['POST']) # noqa: F821 @token_required -def upload(tenant_id): +async def upload(tenant_id): """ Upload a file to the system. --- @@ -77,15 +77,17 @@ def upload(tenant_id): type: string description: File type (e.g., document, folder) """ - pf_id = request.form.get("parent_id") + form = await request.form + files = await request.files + pf_id = form.get("parent_id") if not pf_id: root_folder = FileService.get_root_folder(tenant_id) pf_id = root_folder["id"] - if 'file' not in request.files: + if 'file' not in files: return get_json_result(data=False, message='No file part!', code=400) - file_objs = request.files.getlist('file') + file_objs = files.getlist('file') for file_obj in file_objs: if file_obj.filename == '':