From 95fe5f8baa75ef2ffeba8ec9d35a8ddc8e53a1a8 Mon Sep 17 00:00:00 2001 From: David Beguin Date: Wed, 22 Jan 2020 10:47:43 +0000 Subject: [PATCH] [FIX] website_crm: fix link visitor to lead on insert_record override This commit fixes the insert_record override where, after calling super, the visitor is linked a lead with the id got from result, no matter if the model is lead or not. This commit adds the check to apply the link between visitor and lead only if the current model is crm.lead. Task ID: 2179631 PR #43731 closes odoo/odoo#43814 X-original-commit: 37d4fa4385c6c98bff6b5adc7b6aa0ee325c49eb Signed-off-by: Thibault Delavallee (tde) --- addons/website_crm/controllers/main.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/addons/website_crm/controllers/main.py b/addons/website_crm/controllers/main.py index 9b1c4b7a798..2347d4aa838 100644 --- a/addons/website_crm/controllers/main.py +++ b/addons/website_crm/controllers/main.py @@ -49,19 +49,23 @@ class WebsiteForm(WebsiteForm): return super(WebsiteForm, self).website_form(model_name, **kwargs) def insert_record(self, request, model, values, custom, meta=None): - if model.model == 'crm.lead': + is_lead_model = model.model == 'crm.lead' + if is_lead_model: if 'company_id' not in values: values['company_id'] = request.website.company_id.id lang = request.context.get('lang', False) lang_id = request.env["res.lang"].sudo().search([('code', '=', lang)], limit=1).id values['lang_id'] = lang_id + result = super(WebsiteForm, self).insert_record(request, model, values, custom, meta=meta) - visitor_sudo = request.env['website.visitor']._get_visitor_from_request() - if visitor_sudo and result: - lead_sudo = request.env['crm.lead'].browse(result).sudo() - if lead_sudo.exists(): - vals = {'lead_ids': [(4, result)]} - if not visitor_sudo.lead_ids and not visitor_sudo.partner_id: - vals['name'] = request.env['crm.lead'].browse(result).sudo().contact_name - visitor_sudo.write(vals) + + if is_lead_model: + visitor_sudo = request.env['website.visitor']._get_visitor_from_request() + if visitor_sudo and result: + lead_sudo = request.env['crm.lead'].browse(result).sudo() + if lead_sudo.exists(): + vals = {'lead_ids': [(4, result)]} + if not visitor_sudo.lead_ids and not visitor_sudo.partner_id: + vals['name'] = lead_sudo.contact_name + visitor_sudo.write(vals) return result