Separate normal task review from AQMM review

This commit is contained in:
A R R R Associates
2026-08-11 09:05:09 +05:30
parent 20fd30ff3d
commit c3684b7afa
17 changed files with 435 additions and 98 deletions
+43 -13
View File
@@ -309,7 +309,19 @@ def _advanced_engagement_rows(tasks: list[ClientServiceTaskInstance]) -> list[di
team = _engagement_team(subscription)
status_values = {(getattr(t, "status", None) or "pending").strip().lower() for t in group}
completed = sum(1 for t in group if (getattr(t, "status", None) or "pending").strip().lower() in CLOSED_TASK_STATUSES)
review_pending = sum(1 for t in group if (getattr(t, "manager_review_status", None) or "") == "pending" or (getattr(t, "partner_review_status", None) or "") == "pending" or (getattr(t, "review_partner_review_status", None) or "") == "pending")
review_pending = sum(
1
for t in group
if (
getattr(t, "normal_review_required", False)
and (getattr(t, "normal_review_role", None) or "").strip().lower() in {"manager", "manager_or_partner"}
and (getattr(t, "normal_review_status", None) or "not_required") in {"pending", "rework_required"}
)
or (
getattr(t, "aqmm_manager_review_required", False)
and (getattr(t, "manager_review_status", None) or "not_required") in {"pending", "rework_required"}
)
)
if completed == len(group) and group:
status = "completed"
elif "blocked" in status_values or getattr(subscription, "workflow_pause_reason", None):
@@ -482,19 +494,33 @@ _MANAGER_REVIEW_DONE = {"reviewed"}
_MANAGER_REVIEW_REWORK = {"rework_required"}
def _manager_review_task_state(task: ClientServiceTaskInstance) -> str:
def _manager_review_task_state(task: ClientServiceTaskInstance) -> tuple[str, str | None]:
normal_role = (getattr(task, "normal_review_role", None) or "").strip().lower()
normal_status = (getattr(task, "normal_review_status", None) or "not_required").strip().lower()
manager_status = (getattr(task, "manager_review_status", None) or "not_required").strip().lower()
task_status = (getattr(task, "status", None) or "pending").strip().lower()
rework_status = (getattr(task, "rework_status", None) or "none").strip().lower()
if manager_status in _MANAGER_REVIEW_REWORK or rework_status == "open":
return "rework"
if manager_status in _MANAGER_REVIEW_DONE:
return "reviewed"
if manager_status in _MANAGER_REVIEW_PENDING or task_status in REVIEW_STATUSES:
return "pending_review"
if getattr(task, "aqmm_manager_review_required", False) and task_status in CLOSED_TASK_STATUSES:
return "pending_review"
return "not_ready"
if getattr(task, "normal_review_required", False) and normal_role in {"manager", "manager_or_partner"}:
if normal_status == "rework_required" or rework_status == "open":
return "rework", "normal"
if normal_status == "reviewed":
if not getattr(task, "aqmm_manager_review_required", False):
return "reviewed", "normal"
elif normal_status == "pending":
return "pending_review", "normal"
if getattr(task, "aqmm_manager_review_required", False):
if manager_status in _MANAGER_REVIEW_REWORK or rework_status == "open":
return "rework", "aqmm_manager"
if manager_status in _MANAGER_REVIEW_DONE:
return "reviewed", "aqmm_manager"
if manager_status in _MANAGER_REVIEW_PENDING:
return "pending_review", "aqmm_manager"
task_status = (getattr(task, "status", None) or "pending").strip().lower()
if task_status in CLOSED_TASK_STATUSES:
return "pending_review", "aqmm_manager"
return "not_ready", None
def _manager_review_category(task: ClientServiceTaskInstance) -> str:
@@ -502,7 +528,7 @@ def _manager_review_category(task: ClientServiceTaskInstance) -> str:
def _manager_review_task_row(task: ClientServiceTaskInstance) -> dict[str, Any]:
state = _manager_review_task_state(task)
state, review_kind = _manager_review_task_state(task)
comments = [c for c in (getattr(task, "comments", None) or []) if not getattr(c, "is_deleted", False)]
documents = list(getattr(task, "documents", None) or [])
assignee = getattr(task, "assigned_to", None)
@@ -516,6 +542,10 @@ def _manager_review_task_row(task: ClientServiceTaskInstance) -> dict[str, Any]:
"task_status_label": _status_label(getattr(task, "status", None)),
"review_state": state,
"review_state_label": state.replace("_", " ").title(),
"review_kind": review_kind,
"review_kind_label": "Normal Review" if review_kind == "normal" else ("AQMM Manager Review" if review_kind == "aqmm_manager" else ""),
"normal_review_status": (getattr(task, "normal_review_status", None) or "not_required").strip().lower(),
"normal_review_note": getattr(task, "normal_review_note", None) or "",
"manager_review_status": (getattr(task, "manager_review_status", None) or "not_required").strip().lower(),
"manager_review_note": getattr(task, "manager_review_note", None) or "",
"rework_status": (getattr(task, "rework_status", None) or "none").strip().lower(),