From 213b9bda7dd1402bf6d4cc344be2e3d09d16f764 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Wed, 18 Sep 2019 13:45:52 +0000 Subject: [PATCH] [FIX] hr_holidays: Fix expected singleton issue --- addons/hr_holidays/models/hr_leave.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index db10909d972..fd7a33088db 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -558,14 +558,15 @@ class HolidaysRequest(models.Model): _('%s are only valid until %s') % ( leave.holiday_status_id.display_name, leave.holiday_status_id.validity_stop)) - def _check_double_validation_rules(self, employee, state): + def _check_double_validation_rules(self, employees, state): if self.user_has_groups('hr_holidays.group_hr_holidays_manager'): return is_leave_user = self.user_has_groups('hr_holidays.group_hr_holidays_user') if state == 'validate1': - if employee.leave_manager_id != self.env.user and not is_leave_user: - raise AccessError(_('You cannot first approve a leave for %s, because you are not his leave manager' % (employee.name,))) + employees = employees.filtered(lambda employee: employee.leave_manager_id != self.env.user) + if employees and not is_leave_user: + raise AccessError(_('You cannot first approve a leave for %s, because you are not his leave manager' % (employees[0].name,))) elif state == 'validate' and not is_leave_user: # Is probably handled via ir.rule raise AccessError(_('You don\'t have the rights to apply second approval on a leave request')) @@ -646,7 +647,11 @@ class HolidaysRequest(models.Model): if values.get('state'): self._check_approval_update(values['state']) if any(holiday.validation_type == 'both' for holiday in self): - self._check_double_validation_rules(self.env['hr.employee'].browse(values.get('employee_id', self.employee_id.id)), values['state']) + if values.get('employee_id'): + employees = self.env['hr.employee'].browse(values.get('employee_id')) + else: + employees = self.mapped('employee_id') + self._check_double_validation_rules(employees, values['state']) if 'date_from' in values: values['request_date_from'] = values['date_from'] if 'date_to' in values: