From 2f71ef99c3481172f7eb58802033040099d45f18 Mon Sep 17 00:00:00 2001 From: Elouan Le Bars Date: Thu, 21 Nov 2019 19:06:12 +0100 Subject: [PATCH] [FIX] b_shift : constrain_unique_worker on attendance sheets --- beesdoo_shift/models/attendance_sheet.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/beesdoo_shift/models/attendance_sheet.py b/beesdoo_shift/models/attendance_sheet.py index 7ec28a5..7036fda 100644 --- a/beesdoo_shift/models/attendance_sheet.py +++ b/beesdoo_shift/models/attendance_sheet.py @@ -277,20 +277,21 @@ class AttendanceSheet(models.Model): @api.constrains("expected_shift_ids", "added_shift_ids") def _constrain_unique_worker(self): - return # Warning : map return generator in python3 (for Odoo 12) - # added_workers_ids = map(lambda s: s.worker_id.id, self.added_shift_ids) - # expected_workers_ids = map(lambda s: s.worker_id.id, self.expected_shift_ids) - # replacement_workers_ids = map(lambda s: s.replacement_worker_id.id, self.expected_shift_ids) - # ids = (added_workers_ids + expected_workers_ids + replacement_workers_ids) + added_ids = map(lambda s: s.worker_id.id, self.added_shift_ids) + expected_ids = map(lambda s: s.worker_id.id, self.expected_shift_ids) + replacement_ids = map( + lambda s: s.replacement_worker_id.id, self.expected_shift_ids + ) + replacement_ids = filter(bool, replacement_ids) + ids = added_ids + expected_ids + replacement_ids - # if len(ids) - len(set(ids)): - # raise UserError("You can't add the same worker more than once.") + if (len(ids) - len(set(ids))) > 0: + raise UserError("You can't add the same worker more than once to an attendance sheet.") @api.depends("added_shift_ids") def _compute_added_shift_nb(self): self.added_worker_nb = len(self.added_shift_ids) - return # Compute name (not hardcorded to prevent incoherence with timezone) @api.depends("start_time", "end_time")