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

65 lines
2.1 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from random import randint
from odoo import fields, models
class HrTalentPool(models.Model):
_name = "hr.talent.pool"
_description = "Talent Pool"
_inherit = ["mail.thread"]
def _get_default_color(self):
return randint(1, 11)
active = fields.Boolean(default=True)
name = fields.Char(string="Title", required=True, translate=True)
company_id = fields.Many2one(
"res.company",
string="Company",
default=lambda self: self.env.company,
tracking=True,
)
pool_manager = fields.Many2one(
"res.users",
"Pool Manager",
default=lambda self: self.env.user,
domain="[('share', '=', False), ('company_ids', 'in', company_id)]",
tracking=True,
store=True,
readonly=False,
)
talent_ids = fields.Many2many(comodel_name="hr.applicant", string="Talent", groups="base.group_user")
no_of_talents = fields.Integer(
compute="_compute_talent_count",
string="# Talents",
help="The number of talents in this talent pool.",
)
description = fields.Html(string="Talent Pool Description")
color = fields.Integer(string="Color", default=_get_default_color)
categ_ids = fields.Many2many(
comodel_name="hr.applicant.category",
string="Tags",
store=True,
readonly=False,
)
def _compute_talent_count(self):
talents = self.env["hr.applicant"]._read_group(
domain=[("talent_pool_ids", "in", self.ids)], groupby=["talent_pool_ids"], aggregates=["__count"]
)
talent_data = {talent_pool.id: count for talent_pool, count in talents}
for pool in self:
pool.no_of_talents = talent_data.get(pool.id, 0)
def action_talent_pool_add_talents(self):
self.ensure_one()
return {
"name": self.env._("Create Talent"),
"type": "ir.actions.act_window",
"res_model": "hr.applicant",
"views": [[False, "form"]],
"context": {
"default_talent_pool_ids": [self.id],
},
}