Support manager or partner normal review for existing tasks
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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,7 +1438,13 @@ 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
|
||||||
comment_type = "manager_review_note" if (getattr(task, "normal_review_role", "") or "").startswith("manager") else "partner_review_note"
|
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"
|
||||||
task.updated_by_user_id = user_id
|
task.updated_by_user_id = user_id
|
||||||
_append_system_task_comment(
|
_append_system_task_comment(
|
||||||
db,
|
db,
|
||||||
|
|||||||
Reference in New Issue
Block a user