From 8c7e6d5decb570e093100ca7aef1c62818c717f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20=28avd=29?= Date: Fri, 28 May 2021 15:17:40 +0000 Subject: [PATCH] [FIX] hr_employee: remove duplicates from working_hours computation Since the computation of employees work intervals is done in batch, i.e. 1 call to _work_intervals for each (tz, resource_calendar_id) pairs, removing tz duplicates from mapped results improves the perf of hr_presence_state/hr_icon_display computations. This is especially true for grouped hr.employee kanban view as each column search_read triggers a recompute for these fields. closes odoo/odoo#71772 X-original-commit: be6d4a2523bb1a292908d09dfc5393bc0aa88a2d Signed-off-by: Kevin Baptiste --- addons/hr/models/hr_employee_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr/models/hr_employee_base.py b/addons/hr/models/hr_employee_base.py index 6d5d4cee2f2..fa5318b01f8 100644 --- a/addons/hr/models/hr_employee_base.py +++ b/addons/hr/models/hr_employee_base.py @@ -172,7 +172,7 @@ class HrEmployeeBase(models.AbstractModel): def _get_employee_working_now(self): working_now = [] # We loop over all the employee tz and the resource calendar_id to detect working hours in batch. - all_employee_tz = self.mapped('tz') + all_employee_tz = set(self.mapped('tz')) for tz in all_employee_tz: employee_ids = self.filtered(lambda e: e.tz == tz) resource_calendar_ids = employee_ids.mapped('resource_calendar_id')