mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-26 20:12:05 +02:00
72 lines
2.5 KiB
Python
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",
|
|
}
|