| return {'result': 'success'}, 204 | return {'result': 'success'}, 204 | ||||
| class DocumentRenameApi(DocumentResource): | |||||
| @setup_required | |||||
| @login_required | |||||
| @account_initialization_required | |||||
| @marshal_with(document_fields) | |||||
| def post(self, dataset_id, document_id): | |||||
| # The role of the current user in the ta table must be admin or owner | |||||
| if not current_user.is_admin_or_owner: | |||||
| raise Forbidden() | |||||
| parser = reqparse.RequestParser() | |||||
| parser.add_argument('name', type=str, required=True, nullable=False, location='json') | |||||
| args = parser.parse_args() | |||||
| try: | |||||
| document = DocumentService.rename_document(dataset_id, document_id, args['name']) | |||||
| except services.errors.document.DocumentIndexingError: | |||||
| raise DocumentIndexingError('Cannot delete document during indexing.') | |||||
| return document | |||||
| api.add_resource(GetProcessRuleApi, '/datasets/process-rule') | api.add_resource(GetProcessRuleApi, '/datasets/process-rule') | ||||
| api.add_resource(DatasetDocumentListApi, | api.add_resource(DatasetDocumentListApi, | ||||
| '/datasets/<uuid:dataset_id>/documents') | '/datasets/<uuid:dataset_id>/documents') | ||||
| api.add_resource(DocumentPauseApi, '/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/processing/pause') | api.add_resource(DocumentPauseApi, '/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/processing/pause') | ||||
| api.add_resource(DocumentRecoverApi, '/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/processing/resume') | api.add_resource(DocumentRecoverApi, '/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/processing/resume') | ||||
| api.add_resource(DocumentRetryApi, '/datasets/<uuid:dataset_id>/retry') | api.add_resource(DocumentRetryApi, '/datasets/<uuid:dataset_id>/retry') | ||||
| api.add_resource(DocumentRenameApi, | |||||
| '/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/rename') |
| 'position': fields.Integer, | 'position': fields.Integer, | ||||
| 'data_source_type': fields.String, | 'data_source_type': fields.String, | ||||
| 'data_source_info': fields.Raw(attribute='data_source_info_dict'), | 'data_source_info': fields.Raw(attribute='data_source_info_dict'), | ||||
| 'data_source_detail_dict': fields.Raw(attribute='data_source_detail_dict'), | |||||
| 'dataset_process_rule_id': fields.String, | 'dataset_process_rule_id': fields.String, | ||||
| 'name': fields.String, | 'name': fields.String, | ||||
| 'created_from': fields.String, | 'created_from': fields.String, | ||||
| 'position': fields.Integer, | 'position': fields.Integer, | ||||
| 'data_source_type': fields.String, | 'data_source_type': fields.String, | ||||
| 'data_source_info': fields.Raw(attribute='data_source_info_dict'), | 'data_source_info': fields.Raw(attribute='data_source_info_dict'), | ||||
| 'data_source_detail_dict': fields.Raw(attribute='data_source_detail_dict'), | |||||
| 'dataset_process_rule_id': fields.String, | 'dataset_process_rule_id': fields.String, | ||||
| 'name': fields.String, | 'name': fields.String, | ||||
| 'created_from': fields.String, | 'created_from': fields.String, |
| db.session.delete(document) | db.session.delete(document) | ||||
| db.session.commit() | db.session.commit() | ||||
| @staticmethod | |||||
| def rename_document(dataset_id: str, document_id: str, name: str) -> Document: | |||||
| dataset = DatasetService.get_dataset(dataset_id) | |||||
| if not dataset: | |||||
| raise ValueError('Dataset not found.') | |||||
| document = DocumentService.get_document(dataset_id, document_id) | |||||
| if not document: | |||||
| raise ValueError('Document not found.') | |||||
| if document.tenant_id != current_user.current_tenant_id: | |||||
| raise ValueError('No permission.') | |||||
| document.name = name | |||||
| db.session.add(document) | |||||
| db.session.commit() | |||||
| return document | |||||
| @staticmethod | @staticmethod | ||||
| def pause_document(document): | def pause_document(document): | ||||
| if document.indexing_status not in ["waiting", "parsing", "cleaning", "splitting", "indexing"]: | if document.indexing_status not in ["waiting", "parsing", "cleaning", "splitting", "indexing"]: |