mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
fix(files): replace hard coded status codes with constants (#11544)
### What problem does this PR solve? To solve the problem of error reporting caused by type errors when various types of exception returns are triggered ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
@ -31,7 +31,7 @@ from api.db.services.file_service import FileService
|
|||||||
from api.utils.api_utils import get_json_result
|
from api.utils.api_utils import get_json_result
|
||||||
from api.utils.file_utils import filename_type
|
from api.utils.file_utils import filename_type
|
||||||
from common import settings
|
from common import settings
|
||||||
|
from common.constants import RetCode
|
||||||
|
|
||||||
@manager.route('/file/upload', methods=['POST']) # noqa: F821
|
@manager.route('/file/upload', methods=['POST']) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
@ -86,19 +86,19 @@ async def upload(tenant_id):
|
|||||||
pf_id = root_folder["id"]
|
pf_id = root_folder["id"]
|
||||||
|
|
||||||
if 'file' not in files:
|
if 'file' not in files:
|
||||||
return get_json_result(data=False, message='No file part!', code=400)
|
return get_json_result(data=False, message='No file part!', code=RetCode.BAD_REQUEST)
|
||||||
file_objs = files.getlist('file')
|
file_objs = files.getlist('file')
|
||||||
|
|
||||||
for file_obj in file_objs:
|
for file_obj in file_objs:
|
||||||
if file_obj.filename == '':
|
if file_obj.filename == '':
|
||||||
return get_json_result(data=False, message='No selected file!', code=400)
|
return get_json_result(data=False, message='No selected file!', code=RetCode.BAD_REQUEST)
|
||||||
|
|
||||||
file_res = []
|
file_res = []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
e, pf_folder = FileService.get_by_id(pf_id)
|
e, pf_folder = FileService.get_by_id(pf_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(data=False, message="Can't find this folder!", code=404)
|
return get_json_result(data=False, message="Can't find this folder!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
for file_obj in file_objs:
|
for file_obj in file_objs:
|
||||||
# Handle file path
|
# Handle file path
|
||||||
@ -114,13 +114,13 @@ async def upload(tenant_id):
|
|||||||
if file_len != len_id_list:
|
if file_len != len_id_list:
|
||||||
e, file = FileService.get_by_id(file_id_list[len_id_list - 1])
|
e, file = FileService.get_by_id(file_id_list[len_id_list - 1])
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(data=False, message="Folder not found!", code=404)
|
return get_json_result(data=False, message="Folder not found!", code=RetCode.NOT_FOUND)
|
||||||
last_folder = FileService.create_folder(file, file_id_list[len_id_list - 1], file_obj_names,
|
last_folder = FileService.create_folder(file, file_id_list[len_id_list - 1], file_obj_names,
|
||||||
len_id_list)
|
len_id_list)
|
||||||
else:
|
else:
|
||||||
e, file = FileService.get_by_id(file_id_list[len_id_list - 2])
|
e, file = FileService.get_by_id(file_id_list[len_id_list - 2])
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(data=False, message="Folder not found!", code=404)
|
return get_json_result(data=False, message="Folder not found!", code=RetCode.NOT_FOUND)
|
||||||
last_folder = FileService.create_folder(file, file_id_list[len_id_list - 2], file_obj_names,
|
last_folder = FileService.create_folder(file, file_id_list[len_id_list - 2], file_obj_names,
|
||||||
len_id_list)
|
len_id_list)
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ async def create(tenant_id):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if not FileService.is_parent_folder_exist(pf_id):
|
if not FileService.is_parent_folder_exist(pf_id):
|
||||||
return get_json_result(data=False, message="Parent Folder Doesn't Exist!", code=400)
|
return get_json_result(data=False, message="Parent Folder Doesn't Exist!", code=RetCode.BAD_REQUEST)
|
||||||
if FileService.query(name=req["name"], parent_id=pf_id):
|
if FileService.query(name=req["name"], parent_id=pf_id):
|
||||||
return get_json_result(data=False, message="Duplicated folder name in the same folder.", code=409)
|
return get_json_result(data=False, message="Duplicated folder name in the same folder.", code=409)
|
||||||
|
|
||||||
@ -306,13 +306,13 @@ def list_files(tenant_id):
|
|||||||
try:
|
try:
|
||||||
e, file = FileService.get_by_id(pf_id)
|
e, file = FileService.get_by_id(pf_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="Folder not found!", code=404)
|
return get_json_result(message="Folder not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
files, total = FileService.get_by_pf_id(tenant_id, pf_id, page_number, items_per_page, orderby, desc, keywords)
|
files, total = FileService.get_by_pf_id(tenant_id, pf_id, page_number, items_per_page, orderby, desc, keywords)
|
||||||
|
|
||||||
parent_folder = FileService.get_parent_folder(pf_id)
|
parent_folder = FileService.get_parent_folder(pf_id)
|
||||||
if not parent_folder:
|
if not parent_folder:
|
||||||
return get_json_result(message="File not found!", code=404)
|
return get_json_result(message="File not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
return get_json_result(data={"total": total, "files": files, "parent_folder": parent_folder.to_json()})
|
return get_json_result(data={"total": total, "files": files, "parent_folder": parent_folder.to_json()})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -392,7 +392,7 @@ def get_parent_folder():
|
|||||||
try:
|
try:
|
||||||
e, file = FileService.get_by_id(file_id)
|
e, file = FileService.get_by_id(file_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="Folder not found!", code=404)
|
return get_json_result(message="Folder not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
parent_folder = FileService.get_parent_folder(file_id)
|
parent_folder = FileService.get_parent_folder(file_id)
|
||||||
return get_json_result(data={"parent_folder": parent_folder.to_json()})
|
return get_json_result(data={"parent_folder": parent_folder.to_json()})
|
||||||
@ -439,7 +439,7 @@ def get_all_parent_folders(tenant_id):
|
|||||||
try:
|
try:
|
||||||
e, file = FileService.get_by_id(file_id)
|
e, file = FileService.get_by_id(file_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="Folder not found!", code=404)
|
return get_json_result(message="Folder not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
parent_folders = FileService.get_all_parent_folders(file_id)
|
parent_folders = FileService.get_all_parent_folders(file_id)
|
||||||
parent_folders_res = [folder.to_json() for folder in parent_folders]
|
parent_folders_res = [folder.to_json() for folder in parent_folders]
|
||||||
@ -487,34 +487,34 @@ async def rm(tenant_id):
|
|||||||
for file_id in file_ids:
|
for file_id in file_ids:
|
||||||
e, file = FileService.get_by_id(file_id)
|
e, file = FileService.get_by_id(file_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="File or Folder not found!", code=404)
|
return get_json_result(message="File or Folder not found!", code=RetCode.NOT_FOUND)
|
||||||
if not file.tenant_id:
|
if not file.tenant_id:
|
||||||
return get_json_result(message="Tenant not found!", code=404)
|
return get_json_result(message="Tenant not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
if file.type == FileType.FOLDER.value:
|
if file.type == FileType.FOLDER.value:
|
||||||
file_id_list = FileService.get_all_innermost_file_ids(file_id, [])
|
file_id_list = FileService.get_all_innermost_file_ids(file_id, [])
|
||||||
for inner_file_id in file_id_list:
|
for inner_file_id in file_id_list:
|
||||||
e, file = FileService.get_by_id(inner_file_id)
|
e, file = FileService.get_by_id(inner_file_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="File not found!", code=404)
|
return get_json_result(message="File not found!", code=RetCode.NOT_FOUND)
|
||||||
settings.STORAGE_IMPL.rm(file.parent_id, file.location)
|
settings.STORAGE_IMPL.rm(file.parent_id, file.location)
|
||||||
FileService.delete_folder_by_pf_id(tenant_id, file_id)
|
FileService.delete_folder_by_pf_id(tenant_id, file_id)
|
||||||
else:
|
else:
|
||||||
settings.STORAGE_IMPL.rm(file.parent_id, file.location)
|
settings.STORAGE_IMPL.rm(file.parent_id, file.location)
|
||||||
if not FileService.delete(file):
|
if not FileService.delete(file):
|
||||||
return get_json_result(message="Database error (File removal)!", code=500)
|
return get_json_result(message="Database error (File removal)!", code=RetCode.SERVER_ERROR)
|
||||||
|
|
||||||
informs = File2DocumentService.get_by_file_id(file_id)
|
informs = File2DocumentService.get_by_file_id(file_id)
|
||||||
for inform in informs:
|
for inform in informs:
|
||||||
doc_id = inform.document_id
|
doc_id = inform.document_id
|
||||||
e, doc = DocumentService.get_by_id(doc_id)
|
e, doc = DocumentService.get_by_id(doc_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="Document not found!", code=404)
|
return get_json_result(message="Document not found!", code=RetCode.NOT_FOUND)
|
||||||
tenant_id = DocumentService.get_tenant_id(doc_id)
|
tenant_id = DocumentService.get_tenant_id(doc_id)
|
||||||
if not tenant_id:
|
if not tenant_id:
|
||||||
return get_json_result(message="Tenant not found!", code=404)
|
return get_json_result(message="Tenant not found!", code=RetCode.NOT_FOUND)
|
||||||
if not DocumentService.remove_document(doc, tenant_id):
|
if not DocumentService.remove_document(doc, tenant_id):
|
||||||
return get_json_result(message="Database error (Document removal)!", code=500)
|
return get_json_result(message="Database error (Document removal)!", code=RetCode.SERVER_ERROR)
|
||||||
File2DocumentService.delete_by_file_id(file_id)
|
File2DocumentService.delete_by_file_id(file_id)
|
||||||
|
|
||||||
return get_json_result(data=True)
|
return get_json_result(data=True)
|
||||||
@ -560,23 +560,23 @@ async def rename(tenant_id):
|
|||||||
try:
|
try:
|
||||||
e, file = FileService.get_by_id(req["file_id"])
|
e, file = FileService.get_by_id(req["file_id"])
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="File not found!", code=404)
|
return get_json_result(message="File not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
if file.type != FileType.FOLDER.value and pathlib.Path(req["name"].lower()).suffix != pathlib.Path(
|
if file.type != FileType.FOLDER.value and pathlib.Path(req["name"].lower()).suffix != pathlib.Path(
|
||||||
file.name.lower()).suffix:
|
file.name.lower()).suffix:
|
||||||
return get_json_result(data=False, message="The extension of file can't be changed", code=400)
|
return get_json_result(data=False, message="The extension of file can't be changed", code=RetCode.BAD_REQUEST)
|
||||||
|
|
||||||
for existing_file in FileService.query(name=req["name"], pf_id=file.parent_id):
|
for existing_file in FileService.query(name=req["name"], pf_id=file.parent_id):
|
||||||
if existing_file.name == req["name"]:
|
if existing_file.name == req["name"]:
|
||||||
return get_json_result(data=False, message="Duplicated file name in the same folder.", code=409)
|
return get_json_result(data=False, message="Duplicated file name in the same folder.", code=409)
|
||||||
|
|
||||||
if not FileService.update_by_id(req["file_id"], {"name": req["name"]}):
|
if not FileService.update_by_id(req["file_id"], {"name": req["name"]}):
|
||||||
return get_json_result(message="Database error (File rename)!", code=500)
|
return get_json_result(message="Database error (File rename)!", code=RetCode.SERVER_ERROR)
|
||||||
|
|
||||||
informs = File2DocumentService.get_by_file_id(req["file_id"])
|
informs = File2DocumentService.get_by_file_id(req["file_id"])
|
||||||
if informs:
|
if informs:
|
||||||
if not DocumentService.update_by_id(informs[0].document_id, {"name": req["name"]}):
|
if not DocumentService.update_by_id(informs[0].document_id, {"name": req["name"]}):
|
||||||
return get_json_result(message="Database error (Document rename)!", code=500)
|
return get_json_result(message="Database error (Document rename)!", code=RetCode.SERVER_ERROR)
|
||||||
|
|
||||||
return get_json_result(data=True)
|
return get_json_result(data=True)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -606,13 +606,13 @@ async def get(tenant_id, file_id):
|
|||||||
description: File stream
|
description: File stream
|
||||||
schema:
|
schema:
|
||||||
type: file
|
type: file
|
||||||
404:
|
RetCode.NOT_FOUND:
|
||||||
description: File not found
|
description: File not found
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
e, file = FileService.get_by_id(file_id)
|
e, file = FileService.get_by_id(file_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="Document not found!", code=404)
|
return get_json_result(message="Document not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
blob = settings.STORAGE_IMPL.get(file.parent_id, file.location)
|
blob = settings.STORAGE_IMPL.get(file.parent_id, file.location)
|
||||||
if not blob:
|
if not blob:
|
||||||
@ -677,13 +677,13 @@ async def move(tenant_id):
|
|||||||
for file_id in file_ids:
|
for file_id in file_ids:
|
||||||
file = files_dict[file_id]
|
file = files_dict[file_id]
|
||||||
if not file:
|
if not file:
|
||||||
return get_json_result(message="File or Folder not found!", code=404)
|
return get_json_result(message="File or Folder not found!", code=RetCode.NOT_FOUND)
|
||||||
if not file.tenant_id:
|
if not file.tenant_id:
|
||||||
return get_json_result(message="Tenant not found!", code=404)
|
return get_json_result(message="Tenant not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
fe, _ = FileService.get_by_id(parent_id)
|
fe, _ = FileService.get_by_id(parent_id)
|
||||||
if not fe:
|
if not fe:
|
||||||
return get_json_result(message="Parent Folder not found!", code=404)
|
return get_json_result(message="Parent Folder not found!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
FileService.move_file(file_ids, parent_id)
|
FileService.move_file(file_ids, parent_id)
|
||||||
return get_json_result(data=True)
|
return get_json_result(data=True)
|
||||||
@ -705,7 +705,7 @@ async def convert(tenant_id):
|
|||||||
for file_id in file_ids:
|
for file_id in file_ids:
|
||||||
file = files_set[file_id]
|
file = files_set[file_id]
|
||||||
if not file:
|
if not file:
|
||||||
return get_json_result(message="File not found!", code=404)
|
return get_json_result(message="File not found!", code=RetCode.NOT_FOUND)
|
||||||
file_ids_list = [file_id]
|
file_ids_list = [file_id]
|
||||||
if file.type == FileType.FOLDER.value:
|
if file.type == FileType.FOLDER.value:
|
||||||
file_ids_list = FileService.get_all_innermost_file_ids(file_id, [])
|
file_ids_list = FileService.get_all_innermost_file_ids(file_id, [])
|
||||||
@ -716,13 +716,13 @@ async def convert(tenant_id):
|
|||||||
doc_id = inform.document_id
|
doc_id = inform.document_id
|
||||||
e, doc = DocumentService.get_by_id(doc_id)
|
e, doc = DocumentService.get_by_id(doc_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(message="Document not found!", code=404)
|
return get_json_result(message="Document not found!", code=RetCode.NOT_FOUND)
|
||||||
tenant_id = DocumentService.get_tenant_id(doc_id)
|
tenant_id = DocumentService.get_tenant_id(doc_id)
|
||||||
if not tenant_id:
|
if not tenant_id:
|
||||||
return get_json_result(message="Tenant not found!", code=404)
|
return get_json_result(message="Tenant not found!", code=RetCode.NOT_FOUND)
|
||||||
if not DocumentService.remove_document(doc, tenant_id):
|
if not DocumentService.remove_document(doc, tenant_id):
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
message="Database error (Document removal)!", code=404)
|
message="Database error (Document removal)!", code=RetCode.NOT_FOUND)
|
||||||
File2DocumentService.delete_by_file_id(id)
|
File2DocumentService.delete_by_file_id(id)
|
||||||
|
|
||||||
# insert
|
# insert
|
||||||
@ -730,11 +730,11 @@ async def convert(tenant_id):
|
|||||||
e, kb = KnowledgebaseService.get_by_id(kb_id)
|
e, kb = KnowledgebaseService.get_by_id(kb_id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
message="Can't find this knowledgebase!", code=404)
|
message="Can't find this knowledgebase!", code=RetCode.NOT_FOUND)
|
||||||
e, file = FileService.get_by_id(id)
|
e, file = FileService.get_by_id(id)
|
||||||
if not e:
|
if not e:
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
message="Can't find this file!", code=404)
|
message="Can't find this file!", code=RetCode.NOT_FOUND)
|
||||||
|
|
||||||
doc = DocumentService.insert({
|
doc = DocumentService.insert({
|
||||||
"id": get_uuid(),
|
"id": get_uuid(),
|
||||||
|
|||||||
@ -49,6 +49,7 @@ class RetCode(IntEnum, CustomEnum):
|
|||||||
RUNNING = 106
|
RUNNING = 106
|
||||||
PERMISSION_ERROR = 108
|
PERMISSION_ERROR = 108
|
||||||
AUTHENTICATION_ERROR = 109
|
AUTHENTICATION_ERROR = 109
|
||||||
|
BAD_REQUEST = 400
|
||||||
UNAUTHORIZED = 401
|
UNAUTHORIZED = 401
|
||||||
SERVER_ERROR = 500
|
SERVER_ERROR = 500
|
||||||
FORBIDDEN = 403
|
FORBIDDEN = 403
|
||||||
|
|||||||
Reference in New Issue
Block a user