Files
odoo_source/addons/hr_recruitment/models/res_users.py
T
Yannick Tivisse 8e682dd591 [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>
2022-04-07 13:23:41 +02:00

37 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
class ResUsers(models.Model):
_inherit = 'res.users'
def _create_recruitment_interviewers(self):
if not self:
return
interviewer_group = self.env.ref('hr_recruitment.group_hr_recruitment_interviewer')
recruitment_group = self.env.ref('hr_recruitment.group_hr_recruitment_user')
interviewers = self - recruitment_group.users
interviewers.sudo().write({
'groups_id': [(4, interviewer_group.id)]
})
def _remove_recruitment_interviewers(self):
if not self:
return
interviewer_group = self.env.ref('hr_recruitment.group_hr_recruitment_interviewer')
recruitment_group = self.env.ref('hr_recruitment.group_hr_recruitment_user')
job_interviewers = self.env['hr.job']._read_group([('interviewer_ids', 'in', self.ids)], ['interviewer_ids'], ['interviewer_ids'])
user_ids = {j['interviewer_ids'][0] for j in job_interviewers}
application_interviewers = self.env['hr.applicant']._read_group([('interviewer_id', 'in', self.ids)], ['interviewer_id'], ['interviewer_id'])
user_ids |= {a['interviewer_id'][0] for a in application_interviewers}
# 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))
self.env['res.users'].browse(users_to_remove).sudo().write({
'groups_id': [(3, interviewer_group.id)]
})