From 39bd44a35e64bfc5a02ffefecd2b1b1c538dfdb3 Mon Sep 17 00:00:00 2001 From: Horilla Date: Fri, 16 May 2025 11:03:50 +0530 Subject: [PATCH] [UPDT] OFFBOARDING: Optimize employee status update to skip redundant database writes. --- offboarding/views.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/offboarding/views.py b/offboarding/views.py index 2e15bff83..bd98692f0 100644 --- a/offboarding/views.py +++ b/offboarding/views.py @@ -421,10 +421,14 @@ def change_stage(request): for employee in employees: employee.stage_id = stage employee.save() - if stage.type == "archived": - Employee.objects.filter( - id__in=employees.values_list("employee_id__id", flat=True) - ).update(is_active=False) + + target_state = False if stage.type == "archived" else True + employee_ids = employees.values_list("employee_id__id", flat=True) + Employee.objects.filter( + id__in=employee_ids, + is_active=not target_state, # Only update if is_active differs + ).update(is_active=target_state) + stage_forms = {} stage_forms[str(stage.offboarding_id.id)] = StageSelectForm( offboarding=stage.offboarding_id