Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>tags/1.7.2
| @@ -642,7 +642,7 @@ class DocumentIndexingStatusApi(DocumentResource): | |||
| return marshal(document_dict, document_status_fields) | |||
| class DocumentDetailApi(DocumentResource): | |||
| class DocumentApi(DocumentResource): | |||
| METADATA_CHOICES = {"all", "only", "without"} | |||
| @setup_required | |||
| @@ -730,6 +730,28 @@ class DocumentDetailApi(DocumentResource): | |||
| return response, 200 | |||
| @setup_required | |||
| @login_required | |||
| @account_initialization_required | |||
| @cloud_edition_billing_rate_limit_check("knowledge") | |||
| def delete(self, dataset_id, document_id): | |||
| dataset_id = str(dataset_id) | |||
| document_id = str(document_id) | |||
| dataset = DatasetService.get_dataset(dataset_id) | |||
| if dataset is None: | |||
| raise NotFound("Dataset not found.") | |||
| # check user's model setting | |||
| DatasetService.check_dataset_model_setting(dataset) | |||
| document = self.get_document(dataset_id, document_id) | |||
| try: | |||
| DocumentService.delete_document(document) | |||
| except services.errors.document.DocumentIndexingError: | |||
| raise DocumentIndexingError("Cannot delete document during indexing.") | |||
| return {"result": "success"}, 204 | |||
| class DocumentProcessingApi(DocumentResource): | |||
| @setup_required | |||
| @@ -768,30 +790,6 @@ class DocumentProcessingApi(DocumentResource): | |||
| return {"result": "success"}, 200 | |||
| class DocumentDeleteApi(DocumentResource): | |||
| @setup_required | |||
| @login_required | |||
| @account_initialization_required | |||
| @cloud_edition_billing_rate_limit_check("knowledge") | |||
| def delete(self, dataset_id, document_id): | |||
| dataset_id = str(dataset_id) | |||
| document_id = str(document_id) | |||
| dataset = DatasetService.get_dataset(dataset_id) | |||
| if dataset is None: | |||
| raise NotFound("Dataset not found.") | |||
| # check user's model setting | |||
| DatasetService.check_dataset_model_setting(dataset) | |||
| document = self.get_document(dataset_id, document_id) | |||
| try: | |||
| DocumentService.delete_document(document) | |||
| except services.errors.document.DocumentIndexingError: | |||
| raise DocumentIndexingError("Cannot delete document during indexing.") | |||
| return {"result": "success"}, 204 | |||
| class DocumentMetadataApi(DocumentResource): | |||
| @setup_required | |||
| @login_required | |||
| @@ -1037,11 +1035,10 @@ api.add_resource( | |||
| api.add_resource(DocumentBatchIndexingEstimateApi, "/datasets/<uuid:dataset_id>/batch/<string:batch>/indexing-estimate") | |||
| api.add_resource(DocumentBatchIndexingStatusApi, "/datasets/<uuid:dataset_id>/batch/<string:batch>/indexing-status") | |||
| api.add_resource(DocumentIndexingStatusApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/indexing-status") | |||
| api.add_resource(DocumentDetailApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>") | |||
| api.add_resource(DocumentApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>") | |||
| api.add_resource( | |||
| DocumentProcessingApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/processing/<string:action>" | |||
| ) | |||
| api.add_resource(DocumentDeleteApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>") | |||
| api.add_resource(DocumentMetadataApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/metadata") | |||
| api.add_resource(DocumentStatusApi, "/datasets/<uuid:dataset_id>/documents/status/<string:action>/batch") | |||
| api.add_resource(DocumentPauseApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/processing/pause") | |||
| @@ -358,39 +358,6 @@ class DocumentUpdateByFileApi(DatasetApiResource): | |||
| return documents_and_batch_fields, 200 | |||
| class DocumentDeleteApi(DatasetApiResource): | |||
| @cloud_edition_billing_rate_limit_check("knowledge", "dataset") | |||
| def delete(self, tenant_id, dataset_id, document_id): | |||
| """Delete document.""" | |||
| document_id = str(document_id) | |||
| dataset_id = str(dataset_id) | |||
| tenant_id = str(tenant_id) | |||
| # get dataset info | |||
| dataset = db.session.query(Dataset).where(Dataset.tenant_id == tenant_id, Dataset.id == dataset_id).first() | |||
| if not dataset: | |||
| raise ValueError("Dataset does not exist.") | |||
| document = DocumentService.get_document(dataset.id, document_id) | |||
| # 404 if document not found | |||
| if document is None: | |||
| raise NotFound("Document Not Exists.") | |||
| # 403 if document is archived | |||
| if DocumentService.check_archived(document): | |||
| raise ArchivedDocumentImmutableError() | |||
| try: | |||
| # delete document | |||
| DocumentService.delete_document(document) | |||
| except services.errors.document.DocumentIndexingError: | |||
| raise DocumentIndexingError("Cannot delete document during indexing.") | |||
| return 204 | |||
| class DocumentListApi(DatasetApiResource): | |||
| def get(self, tenant_id, dataset_id): | |||
| dataset_id = str(dataset_id) | |||
| @@ -473,7 +440,7 @@ class DocumentIndexingStatusApi(DatasetApiResource): | |||
| return data | |||
| class DocumentDetailApi(DatasetApiResource): | |||
| class DocumentApi(DatasetApiResource): | |||
| METADATA_CHOICES = {"all", "only", "without"} | |||
| def get(self, tenant_id, dataset_id, document_id): | |||
| @@ -567,6 +534,37 @@ class DocumentDetailApi(DatasetApiResource): | |||
| return response | |||
| @cloud_edition_billing_rate_limit_check("knowledge", "dataset") | |||
| def delete(self, tenant_id, dataset_id, document_id): | |||
| """Delete document.""" | |||
| document_id = str(document_id) | |||
| dataset_id = str(dataset_id) | |||
| tenant_id = str(tenant_id) | |||
| # get dataset info | |||
| dataset = db.session.query(Dataset).where(Dataset.tenant_id == tenant_id, Dataset.id == dataset_id).first() | |||
| if not dataset: | |||
| raise ValueError("Dataset does not exist.") | |||
| document = DocumentService.get_document(dataset.id, document_id) | |||
| # 404 if document not found | |||
| if document is None: | |||
| raise NotFound("Document Not Exists.") | |||
| # 403 if document is archived | |||
| if DocumentService.check_archived(document): | |||
| raise ArchivedDocumentImmutableError() | |||
| try: | |||
| # delete document | |||
| DocumentService.delete_document(document) | |||
| except services.errors.document.DocumentIndexingError: | |||
| raise DocumentIndexingError("Cannot delete document during indexing.") | |||
| return 204 | |||
| api.add_resource( | |||
| DocumentAddByTextApi, | |||
| @@ -588,7 +586,6 @@ api.add_resource( | |||
| "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/update_by_file", | |||
| "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/update-by-file", | |||
| ) | |||
| api.add_resource(DocumentDeleteApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>") | |||
| api.add_resource(DocumentApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>") | |||
| api.add_resource(DocumentListApi, "/datasets/<uuid:dataset_id>/documents") | |||
| api.add_resource(DocumentIndexingStatusApi, "/datasets/<uuid:dataset_id>/documents/<string:batch>/indexing-status") | |||
| api.add_resource(DocumentDetailApi, "/datasets/<uuid:dataset_id>/documents/<uuid:document_id>") | |||