Support manager or partner normal review for existing tasks

This commit is contained in:
A R R R Associates
2026-08-11 09:24:04 +05:30
parent c3684b7afa
commit 70bd5da065
3 changed files with 38 additions and 7 deletions
+1
View File
@@ -167,6 +167,7 @@ def manager_review_task_submit(
decision=decision, decision=decision,
note=review_note, note=review_note,
user_id=current_user.id, user_id=current_user.id,
reviewer_kind="manager",
) )
else: else:
apply_task_review( apply_task_review(
+1
View File
@@ -156,6 +156,7 @@ def partner_review_task_submit(
decision=decision, decision=decision,
note=review_note, note=review_note,
user_id=current_user.id, user_id=current_user.id,
reviewer_kind="partner",
) )
else: else:
apply_task_review( apply_task_review(
+35 -6
View File
@@ -378,6 +378,28 @@ def generate_tasks_for_subscription_if_ready(
) )
def _sync_normal_review_snapshot_preserving_history(
task: ClientServiceTaskInstance,
*,
template: FirmServiceTaskTemplate,
) -> None:
"""Sync only normal-review configuration without rewriting execution/review history."""
task.normal_review_required = bool(getattr(template, "requires_review", False))
task.normal_review_role = normal_review_role_for_template(template)
current_status = (getattr(task, "normal_review_status", None) or "not_required").strip().lower()
if not task.normal_review_required:
task.normal_review_status = "not_required"
return
if current_status in {"reviewed", "rework_required"}:
return
if getattr(task, "rework_status", "none") == "open":
task.normal_review_status = "rework_required"
elif getattr(task, "submitted_for_review_at_utc", None) is not None or (getattr(task, "status", "pending") or "pending").strip().lower() == "completed":
task.normal_review_status = "pending"
else:
task.normal_review_status = "not_ready"
def _copy_template_snapshot_to_task( def _copy_template_snapshot_to_task(
task: ClientServiceTaskInstance, task: ClientServiceTaskInstance,
*, *,
@@ -398,12 +420,7 @@ def _copy_template_snapshot_to_task(
task.response_type = (getattr(template, "response_type", "NONE") or "NONE").upper() task.response_type = (getattr(template, "response_type", "NONE") or "NONE").upper()
task.evidence_required = getattr(template, "evidence_required", False) task.evidence_required = getattr(template, "evidence_required", False)
task.remarks_required_if_no = getattr(template, "remarks_required_if_no", False) task.remarks_required_if_no = getattr(template, "remarks_required_if_no", False)
task.normal_review_required = bool(getattr(template, "requires_review", False)) _sync_normal_review_snapshot_preserving_history(task, template=template)
task.normal_review_role = normal_review_role_for_template(template)
if not task.normal_review_required:
task.normal_review_status = "not_required"
elif (getattr(task, "normal_review_status", None) or "not_required") == "not_required":
task.normal_review_status = "not_ready"
task.is_aqmm_task = getattr(template, "is_aqmm_task", False) task.is_aqmm_task = getattr(template, "is_aqmm_task", False)
task.aqmm_mandatory = getattr(template, "aqmm_mandatory", False) task.aqmm_mandatory = getattr(template, "aqmm_mandatory", False)
task.aqmm_evidence_required = getattr(template, "aqmm_evidence_required", False) task.aqmm_evidence_required = getattr(template, "aqmm_evidence_required", False)
@@ -547,9 +564,14 @@ def sync_open_engagement_tasks_for_service(
template.default_role_name, template.default_role_name,
) )
task.assigned_to_user_id = _default_assignee_for_template(subscription, template) task.assigned_to_user_id = _default_assignee_for_template(subscription, template)
_sync_normal_review_snapshot_preserving_history(task, template=template)
task.updated_by_user_id = user_id task.updated_by_user_id = user_id
result["updated_started"] += 1 result["updated_started"] += 1
else: else:
# Preserve task execution/history, but allow an explicit template sync to
# update only the separated normal-review configuration for existing tasks.
_sync_normal_review_snapshot_preserving_history(task, template=template)
task.updated_by_user_id = user_id
result["preserved_history"] += 1 result["preserved_history"] += 1
return result return result
@@ -1387,6 +1409,7 @@ def apply_normal_task_review(
decision: str, decision: str,
note: str, note: str,
user_id: int, user_id: int,
reviewer_kind: str | None = None,
) -> None: ) -> None:
if getattr(task, "is_locked", False) or getattr(getattr(task, "subscription", None), "is_locked", False): if getattr(task, "is_locked", False) or getattr(getattr(task, "subscription", None), "is_locked", False):
return return
@@ -1415,6 +1438,12 @@ def apply_normal_task_review(
if getattr(task, "rework_status", "none") == "open": if getattr(task, "rework_status", "none") == "open":
task.rework_status = "resolved" task.rework_status = "resolved"
task.rework_resolved_at_utc = now task.rework_resolved_at_utc = now
reviewer = (reviewer_kind or "").strip().lower()
if reviewer == "partner":
comment_type = "partner_review_note"
elif reviewer == "manager":
comment_type = "manager_review_note"
else:
comment_type = "manager_review_note" if (getattr(task, "normal_review_role", "") or "").startswith("manager") else "partner_review_note" comment_type = "manager_review_note" if (getattr(task, "normal_review_role", "") or "").startswith("manager") else "partner_review_note"
task.updated_by_user_id = user_id task.updated_by_user_id = user_id
_append_system_task_comment( _append_system_task_comment(