oca-ocb-hr/odoo-bringout-oca-ocb-hr_recruitment_survey/hr_recruitment_survey/models/survey_invite.py
2025-08-29 15:20:50 +02:00

48 lines
1.9 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, _
from odoo.tools.misc import clean_context
class SurveyInvite(models.TransientModel):
_inherit = "survey.invite"
applicant_id = fields.Many2one('hr.applicant', string='Applicant')
def action_invite(self):
self.ensure_one()
if self.applicant_id:
survey = self.survey_id.with_context(clean_context(self.env.context))
if not self.applicant_id.response_id:
self.applicant_id.write({
'response_id': survey._create_answer(partner=self.applicant_id.partner_id).id
})
partner = self.applicant_id.partner_id
survey_link = survey._get_html_link(title=survey.title)
partner_link = partner._get_html_link()
content = _('The survey %(survey_link)s has been sent to %(partner_link)s', survey_link=survey_link, partner_link=partner_link)
body = '<p>%s</p>' % content
self.applicant_id.message_post(body=body)
return super().action_invite()
class SurveyUserInput(models.Model):
_inherit = "survey.user_input"
applicant_id = fields.One2many('hr.applicant', 'response_id', string='Applicant')
def _mark_done(self):
odoobot = self.env.ref('base.partner_root')
for user_input in self:
if user_input.applicant_id:
body = _('The applicant "%s" has finished the survey.', user_input.applicant_id.partner_name)
user_input.applicant_id.message_post(body=body, author_id=odoobot.id)
return super()._mark_done()
@api.model_create_multi
def create(self, values_list):
if 'default_applicant_id' in self.env.context:
self = self.with_context(default_applicant_id=False)
return super().create(values_list)