Add AQMM task evidence and review notes workflow
This commit is contained in:
@@ -87,7 +87,9 @@ from app.modules.services.task_documents import (
|
||||
list_task_document_requirements,
|
||||
requirement_upload_status,
|
||||
save_uploaded_task_document,
|
||||
update_task_document_evidence_review,
|
||||
)
|
||||
from app.modules.services.execution import recalculate_task_aqmm_status
|
||||
|
||||
router = APIRouter(prefix="/documents", tags=["documents-ui"])
|
||||
logger = logging.getLogger("audit_storage_agent.documents_ui")
|
||||
@@ -205,6 +207,8 @@ def upload_engagement_document(
|
||||
remarks: str | None = Form(None),
|
||||
existing_document_id: str | None = Form(None),
|
||||
udin_required: str | None = Form(None),
|
||||
evidence_type: str | None = Form(None),
|
||||
evidence_description: str | None = Form(None),
|
||||
file: UploadFile = File(...),
|
||||
csrf_token: str = Form(...),
|
||||
):
|
||||
@@ -237,7 +241,10 @@ def upload_engagement_document(
|
||||
user=user,
|
||||
existing_document_id=int(existing_document_id) if existing_document_id else None,
|
||||
udin_required=_bool_from_form(udin_required),
|
||||
evidence_type=evidence_type,
|
||||
evidence_description=evidence_description,
|
||||
)
|
||||
recalculate_task_aqmm_status(db, task)
|
||||
log_document_access(db, action="upload", result="success", user=user, request=request, document=doc)
|
||||
db.commit()
|
||||
except Exception as exc:
|
||||
@@ -308,6 +315,8 @@ def upload_task_document(
|
||||
remarks: str | None = Form(None),
|
||||
existing_document_id: str | None = Form(None),
|
||||
udin_required: str | None = Form(None),
|
||||
evidence_type: str | None = Form(None),
|
||||
evidence_description: str | None = Form(None),
|
||||
file: UploadFile = File(...),
|
||||
csrf_token: str = Form(...),
|
||||
):
|
||||
@@ -347,7 +356,10 @@ def upload_task_document(
|
||||
user=user,
|
||||
existing_document_id=int(existing_document_id) if existing_document_id else None,
|
||||
udin_required=_bool_from_form(udin_required),
|
||||
evidence_type=evidence_type,
|
||||
evidence_description=evidence_description,
|
||||
)
|
||||
recalculate_task_aqmm_status(db, task)
|
||||
log_document_access(db, action="task_upload", result="success", user=user, request=request, document=doc)
|
||||
db.commit()
|
||||
except Exception as exc:
|
||||
@@ -363,6 +375,48 @@ def upload_task_document(
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
@router.post("/tasks/{task_id}/documents/{document_id}/evidence-review")
|
||||
def update_task_document_evidence(
|
||||
request: Request,
|
||||
task_id: int,
|
||||
document_id: int,
|
||||
evidence_status: str = Form("uploaded"),
|
||||
evidence_type: str | None = Form(None),
|
||||
evidence_description: str | None = Form(None),
|
||||
evidence_review_note: str | None = Form(None),
|
||||
csrf_token: str = Form(...),
|
||||
):
|
||||
validate_csrf(request, csrf_token)
|
||||
db = CommonSessionLocal()
|
||||
try:
|
||||
user, response = _require_user(request, db, "documents.upload")
|
||||
if response:
|
||||
return response
|
||||
scope = build_document_scope(request, db, user)
|
||||
task = get_task_with_subscription(db, task_id)
|
||||
engagement = task.subscription if task else None
|
||||
if not task or not engagement or not user_can_upload_to_engagement(db, user, engagement, scope):
|
||||
return _redirect_denied()
|
||||
document = get_document(db, document_id)
|
||||
if not document or int(document.task_instance_id or 0) != int(task.id):
|
||||
return RedirectResponse(url=f"/documents/tasks/{task_id}?error=invalid_document", status_code=303)
|
||||
update_task_document_evidence_review(
|
||||
db,
|
||||
document=document,
|
||||
evidence_status=evidence_status,
|
||||
evidence_type=evidence_type,
|
||||
evidence_description=evidence_description,
|
||||
evidence_review_note=evidence_review_note,
|
||||
user=user,
|
||||
)
|
||||
recalculate_task_aqmm_status(db, task)
|
||||
log_document_access(db, action="task_evidence_review", result="success", user=user, request=request, document=document)
|
||||
db.commit()
|
||||
return RedirectResponse(url=f"/documents/tasks/{task_id}?evidence_reviewed=1", status_code=303)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@router.get("/udin-register")
|
||||
def udin_register(request: Request, financial_year: str = "", status: str = "", q: str = ""):
|
||||
db = CommonSessionLocal()
|
||||
|
||||
Reference in New Issue
Block a user