[FW][FIX] hr_holidays/hr_recruitment: Write correclty on groups
Purpose ======= This is the optimal way to add a user on a group, to avoid calling the contraint method _check_one_user_type on all the users from the group closes odoo/odoo#87998 Related: odoo/enterprise#25908 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
@@ -209,10 +209,11 @@ class HrEmployeeBase(models.AbstractModel):
|
||||
if 'leave_manager_id' in values:
|
||||
old_managers = self.mapped('leave_manager_id')
|
||||
if values['leave_manager_id']:
|
||||
old_managers -= self.env['res.users'].browse(values['leave_manager_id'])
|
||||
leave_manager = self.env['res.users'].browse(values['leave_manager_id'])
|
||||
old_managers -= leave_manager
|
||||
approver_group = self.env.ref('hr_holidays.group_hr_holidays_responsible', raise_if_not_found=False)
|
||||
if approver_group:
|
||||
approver_group.sudo().write({'users': [(4, values['leave_manager_id'])]})
|
||||
if approver_group and not leave_manager.has_group('hr_holidays.group_hr_holidays_responsible'):
|
||||
leave_manager.sudo().write({'groups_id': [(4, approver_group.id)]})
|
||||
|
||||
res = super(HrEmployeeBase, self).write(values)
|
||||
# remove users from the Responsible group if they are no longer leave managers
|
||||
|
||||
@@ -12,10 +12,9 @@ class ResUsers(models.Model):
|
||||
interviewer_group = self.env.ref('hr_recruitment.group_hr_recruitment_interviewer')
|
||||
recruitment_group = self.env.ref('hr_recruitment.group_hr_recruitment_user')
|
||||
|
||||
interviewer_group.sudo().write({
|
||||
'users': [
|
||||
(4, user.id) for user in self - recruitment_group.users
|
||||
]
|
||||
interviewers = self - recruitment_group.users
|
||||
interviewers.sudo().write({
|
||||
'groups_id': [(4, interviewer_group.id)]
|
||||
})
|
||||
|
||||
def _remove_recruitment_interviewers(self):
|
||||
@@ -32,8 +31,6 @@ class ResUsers(models.Model):
|
||||
|
||||
# Remove users that are no longer interviewers on at least a job or an application
|
||||
users_to_remove = set(self.ids) - (user_ids | set(recruitment_group.users.ids))
|
||||
interviewer_group.sudo().write({
|
||||
'users': [
|
||||
(3, user_id) for user_id in users_to_remove
|
||||
]
|
||||
self.env['res.users'].browse(users_to_remove).sudo().write({
|
||||
'groups_id': [(3, interviewer_group.id)]
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user