fix: enhance file upload error handling and update base error class (#12132)

Signed-off-by: -LAN- <laipz8200@outlook.com>
This commit is contained in:
-LAN- 2024-12-26 23:31:29 +08:00 committed by GitHub
parent e765d8e69e
commit be7877f526
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 11 deletions

View File

@ -8,12 +8,16 @@ from werkzeug.exceptions import NotFound
import services.dataset_service import services.dataset_service
from controllers.common.errors import FilenameNotExistsError from controllers.common.errors import FilenameNotExistsError
from controllers.service_api import api from controllers.service_api import api
from controllers.service_api.app.error import ProviderNotInitializeError from controllers.service_api.app.error import (
FileTooLargeError,
NoFileUploadedError,
ProviderNotInitializeError,
TooManyFilesError,
UnsupportedFileTypeError,
)
from controllers.service_api.dataset.error import ( from controllers.service_api.dataset.error import (
ArchivedDocumentImmutableError, ArchivedDocumentImmutableError,
DocumentIndexingError, DocumentIndexingError,
NoFileUploadedError,
TooManyFilesError,
) )
from controllers.service_api.wraps import DatasetApiResource, cloud_edition_billing_resource_check from controllers.service_api.wraps import DatasetApiResource, cloud_edition_billing_resource_check
from core.errors.error import ProviderTokenNotInitError from core.errors.error import ProviderTokenNotInitError
@ -238,13 +242,18 @@ class DocumentUpdateByFileApi(DatasetApiResource):
if not file.filename: if not file.filename:
raise FilenameNotExistsError raise FilenameNotExistsError
upload_file = FileService.upload_file( try:
filename=file.filename, upload_file = FileService.upload_file(
content=file.read(), filename=file.filename,
mimetype=file.mimetype, content=file.read(),
user=current_user, mimetype=file.mimetype,
source="datasets", user=current_user,
) source="datasets",
)
except services.errors.file.FileTooLargeError as file_too_large_error:
raise FileTooLargeError(file_too_large_error.description)
except services.errors.file.UnsupportedFileTypeError:
raise UnsupportedFileTypeError()
data_source = {"type": "upload_file", "info_list": {"file_info_list": {"file_ids": [upload_file.id]}}} data_source = {"type": "upload_file", "info_list": {"file_info_list": {"file_ids": [upload_file.id]}}}
args["data_source"] = data_source args["data_source"] = data_source
# validate args # validate args

View File

@ -1,6 +1,6 @@
from typing import Optional from typing import Optional
class BaseServiceError(Exception): class BaseServiceError(ValueError):
def __init__(self, description: Optional[str] = None): def __init__(self, description: Optional[str] = None):
self.description = description self.description = description