Add AQMM task evidence and review notes workflow

This commit is contained in:
A R R R Associates
2026-07-07 12:03:07 +05:30
parent 05690a220c
commit 91b1811eb8
10 changed files with 816 additions and 11 deletions
+37
View File
@@ -1,5 +1,6 @@
from __future__ import annotations
from datetime import datetime, timezone
import os
import shutil
from pathlib import Path
@@ -219,6 +220,8 @@ def save_uploaded_task_document(
user,
existing_document_id: int | None = None,
udin_required: bool | str | None = None,
evidence_type: str | None = None,
evidence_description: str | None = None,
) -> EngagementDocument:
engagement = task.subscription or db.get(ClientServiceSubscription, task.subscription_id)
if engagement is None:
@@ -241,5 +244,39 @@ def save_uploaded_task_document(
)
doc.task_instance_id = task.id
doc.document_requirement_id = requirement.id if requirement else None
if getattr(task, "is_aqmm_task", False):
doc.is_aqmm_evidence = True
doc.evidence_status = "uploaded"
doc.evidence_type = (evidence_type or getattr(requirement, "document_type", None) or document_type or "GENERAL").strip()[:80]
doc.evidence_description = (evidence_description or description or remarks or "").strip() or None
elif not getattr(doc, "is_aqmm_evidence", False):
doc.evidence_status = getattr(doc, "evidence_status", None) or "not_required"
db.flush()
return doc
def update_task_document_evidence_review(
db: Session,
*,
document: EngagementDocument,
evidence_status: str,
evidence_type: str | None,
evidence_description: str | None,
evidence_review_note: str | None,
user,
) -> EngagementDocument:
allowed = {"not_required", "uploaded", "accepted", "rejected"}
status = (evidence_status or "uploaded").strip().lower()
if status not in allowed:
status = "uploaded"
document.is_aqmm_evidence = bool(status != "not_required")
document.evidence_status = status
document.evidence_type = (evidence_type or "").strip()[:80] or None
document.evidence_description = (evidence_description or "").strip() or None
document.evidence_review_note = (evidence_review_note or "").strip() or None
document.evidence_reviewed_by_user_id = getattr(user, "id", None)
document.evidence_reviewed_at_utc = datetime.now(timezone.utc)
document.updated_by_user_id = getattr(user, "id", None)
db.flush()
return document