Skip to content
Snippets Groups Projects
Commit 740a9605 authored by blenzi's avatar blenzi
Browse files

Merge branch 'stop-processing' into 'develop'

Implement /document/process/stop ; convert status_details to str, needed for update in sofia_parsing

See merge request ademe-group/sofia/sofia_collections!27
parents 1f69ff50 e5dfd096
No related branches found
No related tags found
No related merge requests found
Pipeline #500395 failed
...@@ -222,7 +222,28 @@ def update_processing_status(session: SessionDep, current_user: CurrentUser, id: ...@@ -222,7 +222,28 @@ def update_processing_status(session: SessionDep, current_user: CurrentUser, id:
if new_status is not document.processing_status: if new_status is not document.processing_status:
document.processing_status = new_status document.processing_status = new_status
document.processing_status_details = details document.processing_status_details = str(details) # Conversion needed by SQL to accept dict
crud.update_generic_item(session=session, model=Document, item_update=document, item_id=id) crud.update_generic_item(session=session, model=Document, item_update=document, item_id=id)
return ProcessingStatusPublic(status=new_status, details=details) return ProcessingStatusPublic(status=new_status, details=details)
# N.B.: Does not, maybe because the task is running in a solo pool
@router.post("/{id}/process/stop")
def stop_processing_document(session: SessionDep, current_user: CurrentUser, id: uuid.UUID) -> Any:
with user_permissions(current_user):
document: Document = cast(Document, crud.read_generic_item(session=session, model=Document, item_id=id))
if not document.can_edit:
raise HTTPException(status_code=403, detail="The user doesn't have enough privileges")
if celery_app is None and not settings.FAKE_SOFIA_CHAT:
raise HTTPException(
status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Document processing unavailable"
)
if not document.processing_task_id:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="No processing task id, you need to call /document/{id}/process before.",
)
if celery_app is not None: # for mypy
celery_app.control.revoke(str(document.processing_task_id), terminate=True, signal="SIGKILL")
return Message(message=f"Task {document.processing_task_id} revoked")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment