From 831fb8fee31c34af54ea659f6835c3b3c44efffb Mon Sep 17 00:00:00 2001 From: William Braeckman Date: Wed, 23 Jun 2021 14:51:06 +0000 Subject: [PATCH] [FIX] hr_recruitment: fix calendar_events When using the Add button on the calendar view introduced with odoo/odoo#64948 the event would not be linked with the applicant. After further investigation the method used to get the applicant id in default_get was not flexible enough, the one from crm calendar has been 'copied' Task ID: 2578165 closes odoo/odoo#73621 X-original-commit: f23e07dcb0606dbc4bf835b8266323d5a515662d Signed-off-by: Yannick Tivisse (yti) Signed-off-by: William Braeckman (wbr) --- addons/hr_recruitment/models/calendar.py | 9 ++++++--- addons/hr_recruitment/models/hr_recruitment.py | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/hr_recruitment/models/calendar.py b/addons/hr_recruitment/models/calendar.py index 554ab1cd76305..d97ee566e8fe3 100644 --- a/addons/hr_recruitment/models/calendar.py +++ b/addons/hr_recruitment/models/calendar.py @@ -12,6 +12,7 @@ class CalendarEvent(models.Model): def default_get(self, fields): if self.env.context.get('default_applicant_id'): self = self.with_context( + default_res_model='hr.applicant', #res_model seems to be lost without this default_res_model_id=self.env.ref('hr_recruitment.model_hr_applicant').id, default_res_id=self.env.context['default_applicant_id'] ) @@ -19,9 +20,11 @@ def default_get(self, fields): defaults = super(CalendarEvent, self).default_get(fields) # sync res_model / res_id to opportunity id (aka creating meeting from lead chatter) - if 'applicant_id' not in defaults and defaults.get('res_id') and (defaults.get('res_model') or defaults.get('res_model_id')): - if (defaults.get('res_model') and defaults['res_model'] == 'hr.applicant') or (defaults.get('res_model_id') and self.env['ir.model'].sudo().browse(defaults['res_model_id']).model == 'hr.applicant'): - defaults['applicant_id'] = defaults['res_id'] + if 'applicant_id' not in defaults: + res_model = defaults.get('res_model', False) or self.env.context.get('default_res_model') + res_model_id = defaults.get('res_model_id', False) or self.env.context.get('default_res_model_id') + if (res_model and res_model == 'hr.applicant') or (res_model_id and self.env['ir.model'].sudo().browse(res_model_id).model == 'hr.applicant'): + defaults['applicant_id'] = defaults.get('res_id', False) or self.env.context.get('default_res_id', False) return defaults diff --git a/addons/hr_recruitment/models/hr_recruitment.py b/addons/hr_recruitment/models/hr_recruitment.py index 9b18f7a6f5feb..2e2fdbe510e76 100644 --- a/addons/hr_recruitment/models/hr_recruitment.py +++ b/addons/hr_recruitment/models/hr_recruitment.py @@ -341,6 +341,7 @@ def action_makeMeeting(self): category = self.env.ref('hr_recruitment.categ_meet_interview') res = self.env['ir.actions.act_window']._for_xml_id('calendar.action_calendar_event') res['context'] = { + 'default_applicant_id': self.id, 'default_partner_ids': partners.ids, 'default_user_id': self.env.uid, 'default_name': self.name,