oca-ocb-hr/odoo-bringout-oca-ocb-hr_recruitment/hr_recruitment/wizard/talent_pool_add_applicants.py
Ernad Husremovic e1d89e11e3 19.0 vanilla
2026-03-09 09:31:00 +01:00

72 lines
2.5 KiB
Python

from odoo import fields, models, Command
class TalentPoolAddApplicants(models.TransientModel):
_name = "talent.pool.add.applicants"
_description = "Add applicants to talent pool"
applicant_ids = fields.Many2many(
"hr.applicant",
string="Applicants",
required=True,
domain=[
"|",
("talent_pool_ids", "!=", False),
("is_applicant_in_pool", "=", False),
],
)
talent_pool_ids = fields.Many2many("hr.talent.pool", string="Talent Pool")
categ_ids = fields.Many2many(
"hr.applicant.category",
string="Tags",
)
def _add_applicants_to_pool(self):
talents = self.env["hr.applicant"]
for applicant in self.applicant_ids:
if applicant.talent_pool_ids:
applicant.write(
{
"talent_pool_ids": [
Command.link(talent_pool.id)
for talent_pool in self.talent_pool_ids
],
"categ_ids": [
Command.link(categ.id) for categ in self.categ_ids
],
}
)
talents += applicant
else:
talent = applicant.with_context(no_copy_in_partner_name=True).copy(
{
"job_id": False,
"talent_pool_ids": self.talent_pool_ids,
"categ_ids": applicant.categ_ids + self.categ_ids,
}
)
talent.write({"pool_applicant_id": talent.id})
applicant.write({"pool_applicant_id": talent.id})
talents += talent
return talents
def action_add_applicants_to_pool(self):
talents = self.sudo()._add_applicants_to_pool()
if len(talents) == 1:
return {
"type": "ir.actions.act_window",
"res_model": "hr.applicant",
"view_mode": "form",
"views": [
(
self.env.ref("hr_recruitment.hr_applicant_view_form").id,
"form",
)
],
"target": "current",
"res_id": talents.id,
}
else:
return {
"type": "ir.actions.client",
"tag": "soft_reload",
}