From 0265ca977f928fe74af2e61e83e50d6af3ff6153 Mon Sep 17 00:00:00 2001 From: Corentin Forler <10946971+cogk@users.noreply.github.com> Date: Sat, 27 Jul 2024 16:16:07 +0200 Subject: [PATCH] fix: Sort lists before calling itertools.groupby (#1997) --- hrms/hr/doctype/shift_type/shift_type.py | 5 +++-- .../monthly_attendance_sheet/monthly_attendance_sheet.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/hrms/hr/doctype/shift_type/shift_type.py b/hrms/hr/doctype/shift_type/shift_type.py index c7aa5368b4..328706c3f2 100644 --- a/hrms/hr/doctype/shift_type/shift_type.py +++ b/hrms/hr/doctype/shift_type/shift_type.py @@ -2,8 +2,8 @@ # For license information, please see license.txt -import itertools from datetime import datetime, timedelta +from itertools import groupby import frappe from frappe.model.document import Document @@ -36,7 +36,8 @@ def process_auto_attendance(self): logs = self.get_employee_checkins() - for key, group in itertools.groupby(logs, key=lambda x: (x["employee"], x["shift_start"])): + group_key = lambda x: (x["employee"], x["shift_start"]) # noqa + for key, group in groupby(sorted(logs, key=group_key), key=group_key): single_shift_logs = list(group) attendance_date = key[1].date() employee = key[0] diff --git a/hrms/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py b/hrms/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py index 0c0beb9d51..e74bac6a82 100644 --- a/hrms/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py +++ b/hrms/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py @@ -305,7 +305,8 @@ def get_employee_related_details(filters: Filters) -> tuple[dict, list]: emp_map = {} if group_by: - for parameter, employees in groupby(employee_details, key=lambda d: d[group_by]): + group_key = lambda d: d[group_by] # noqa + for parameter, employees in groupby(sorted(employee_details, key=group_key), key=group_key): group_by_param_values.append(parameter) emp_map.setdefault(parameter, frappe._dict())