[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) <tde@openerp.com>
This commit is contained in:
David Beguin
2020-01-23 08:38:08 +00:00
parent 5fdd2b4700
commit 95fe5f8baa
+13 -9
View File
@@ -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