[FIX] hr_holidays: Fix expected singleton issue

This commit is contained in:
Yannick Tivisse
2019-09-23 07:56:12 +00:00
parent fbae846daf
commit 213b9bda7d
+9 -4
View File
@@ -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: