Separate normal task review from AQMM review
This commit is contained in:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user