| from controllers.console import api | from controllers.console import api | ||||
| from controllers.console.apikey import api_key_fields, api_key_list | from controllers.console.apikey import api_key_fields, api_key_list | ||||
| from controllers.console.app.error import ProviderNotInitializeError | from controllers.console.app.error import ProviderNotInitializeError | ||||
| from controllers.console.datasets.error import DatasetNameDuplicateError | |||||
| from controllers.console.datasets.error import DatasetInUseError, DatasetNameDuplicateError | |||||
| from controllers.console.setup import setup_required | from controllers.console.setup import setup_required | ||||
| from controllers.console.wraps import account_initialization_required | from controllers.console.wraps import account_initialization_required | ||||
| from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError | from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError | ||||
| if not current_user.is_admin_or_owner: | if not current_user.is_admin_or_owner: | ||||
| raise Forbidden() | raise Forbidden() | ||||
| if DatasetService.delete_dataset(dataset_id_str, current_user): | |||||
| return {'result': 'success'}, 204 | |||||
| else: | |||||
| raise NotFound("Dataset not found.") | |||||
| try: | |||||
| if DatasetService.delete_dataset(dataset_id_str, current_user): | |||||
| return {'result': 'success'}, 204 | |||||
| else: | |||||
| raise NotFound("Dataset not found.") | |||||
| except services.errors.dataset.DatasetInUseError: | |||||
| raise DatasetInUseError() | |||||
| class DatasetQueryApi(Resource): | class DatasetQueryApi(Resource): |
| error_code = 'invalid_metadata' | error_code = 'invalid_metadata' | ||||
| description = "The metadata content is incorrect. Please check and verify." | description = "The metadata content is incorrect. Please check and verify." | ||||
| code = 400 | code = 400 | ||||
| class DatasetInUseError(BaseHTTPException): | |||||
| error_code = 'dataset_in_use' | |||||
| description = "The dataset is being used by some apps. Please remove the dataset from the apps before deleting it." | |||||
| code = 409 |
| import services.dataset_service | import services.dataset_service | ||||
| from controllers.service_api import api | from controllers.service_api import api | ||||
| from controllers.service_api.dataset.error import DatasetNameDuplicateError | |||||
| from controllers.service_api.dataset.error import DatasetInUseError, DatasetNameDuplicateError | |||||
| from controllers.service_api.wraps import DatasetApiResource | from controllers.service_api.wraps import DatasetApiResource | ||||
| from core.model_runtime.entities.model_entities import ModelType | from core.model_runtime.entities.model_entities import ModelType | ||||
| from core.provider_manager import ProviderManager | from core.provider_manager import ProviderManager | ||||
| dataset_id_str = str(dataset_id) | dataset_id_str = str(dataset_id) | ||||
| if DatasetService.delete_dataset(dataset_id_str, current_user): | |||||
| return {'result': 'success'}, 204 | |||||
| else: | |||||
| raise NotFound("Dataset not found.") | |||||
| try: | |||||
| if DatasetService.delete_dataset(dataset_id_str, current_user): | |||||
| return {'result': 'success'}, 204 | |||||
| else: | |||||
| raise NotFound("Dataset not found.") | |||||
| except services.errors.dataset.DatasetInUseError: | |||||
| raise DatasetInUseError() | |||||
| api.add_resource(DatasetListApi, '/datasets') | api.add_resource(DatasetListApi, '/datasets') | ||||
| api.add_resource(DatasetApi, '/datasets/<uuid:dataset_id>') | api.add_resource(DatasetApi, '/datasets/<uuid:dataset_id>') |
| error_code = 'invalid_metadata' | error_code = 'invalid_metadata' | ||||
| description = "The metadata content is incorrect. Please check and verify." | description = "The metadata content is incorrect. Please check and verify." | ||||
| code = 400 | code = 400 | ||||
| class DatasetInUseError(BaseHTTPException): | |||||
| error_code = 'dataset_in_use' | |||||
| description = "The dataset is being used by some apps. Please remove the dataset from the apps before deleting it." | |||||
| code = 409 |
| from models.model import UploadFile | from models.model import UploadFile | ||||
| from models.source import DataSourceBinding | from models.source import DataSourceBinding | ||||
| from services.errors.account import NoPermissionError | from services.errors.account import NoPermissionError | ||||
| from services.errors.dataset import DatasetNameDuplicateError | |||||
| from services.errors.dataset import DatasetInUseError, DatasetNameDuplicateError | |||||
| from services.errors.document import DocumentIndexingError | from services.errors.document import DocumentIndexingError | ||||
| from services.errors.file import FileNotExistsError | from services.errors.file import FileNotExistsError | ||||
| from services.feature_service import FeatureModel, FeatureService | from services.feature_service import FeatureModel, FeatureService | ||||
| @staticmethod | @staticmethod | ||||
| def delete_dataset(dataset_id, user): | def delete_dataset(dataset_id, user): | ||||
| # todo: cannot delete dataset if it is being processed | |||||
| count = AppDatasetJoin.query.filter_by(dataset_id=dataset_id).count() | |||||
| if count > 0: | |||||
| raise DatasetInUseError() | |||||
| dataset = DatasetService.get_dataset(dataset_id) | dataset = DatasetService.get_dataset(dataset_id) | ||||
| class DatasetNameDuplicateError(BaseServiceError): | class DatasetNameDuplicateError(BaseServiceError): | ||||
| pass | pass | ||||
| class DatasetInUseError(BaseServiceError): | |||||
| pass |