Commit f8e3ad69 authored by jyong's avatar jyong

support mutil documents retry

parent 2790cf4c
import logging
from datetime import datetime from datetime import datetime
from flask import request from flask import request
...@@ -883,35 +884,44 @@ class DocumentRecoverApi(DocumentResource): ...@@ -883,35 +884,44 @@ class DocumentRecoverApi(DocumentResource):
return {'result': 'success'}, 204 return {'result': 'success'}, 204
class DocumentRetryApi(DocumentResource): class DocumentRetryApi(DocumentResource):
@setup_required @setup_required
@login_required @login_required
@account_initialization_required @account_initialization_required
def post(self, dataset_id, document_id): def post(self, dataset_id):
"""retry document.""" """retry document."""
parser = reqparse.RequestParser()
parser.add_argument('document_ids', type=list, required=True, nullable=False,
location='json')
args = parser.parse_args()
dataset_id = str(dataset_id) dataset_id = str(dataset_id)
document_id = str(document_id) for document_id in args['document_ids']:
dataset = DatasetService.get_dataset(dataset_id) try:
if not dataset: document_id = str(document_id)
raise NotFound('Dataset not found.') dataset = DatasetService.get_dataset(dataset_id)
if not dataset:
raise NotFound('Dataset not found.')
document = DocumentService.get_document(dataset.id, document_id) document = DocumentService.get_document(dataset.id, document_id)
# 404 if document not found # 404 if document not found
if document is None: if document is None:
raise NotFound("Document Not Exists.") raise NotFound("Document Not Exists.")
# 403 if document is archived # 403 if document is archived
if DocumentService.check_archived(document): if DocumentService.check_archived(document):
raise ArchivedDocumentImmutableError() raise ArchivedDocumentImmutableError()
# 400 if document is completed # 400 if document is completed
if document.indexing_status == 'completed': if document.indexing_status == 'completed':
raise DocumentAlreadyFinishedError() raise DocumentAlreadyFinishedError()
# retry document # retry document
DocumentService.retry_document(document) DocumentService.retry_document(document)
except Exception as e:
logging.error(f"Document {document_id} retry failed: {str(e)}")
continue
return {'result': 'success'}, 204 return {'result': 'success'}, 204
...@@ -941,3 +951,4 @@ api.add_resource(DocumentStatusApi, ...@@ -941,3 +951,4 @@ api.add_resource(DocumentStatusApi,
'/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/status/<string:action>') '/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/status/<string:action>')
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')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment