From f91782279aaa9597762a8764271e5b45b26b5166 Mon Sep 17 00:00:00 2001 From: Renaud Thiry Date: Thu, 23 Mar 2023 06:07:21 +0000 Subject: [PATCH] [IMP] crm: preserve action context for lost lead MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prior to this all of the context of the action called in the list action was overriden. We now combine the action context with the environment context. This allows keeping the context from the XML action that defines the modal sizing. task-3235932 closes odoo/odoo#116287 Related: odoo/upgrade#4493 Signed-off-by: Warnon Aurélien (awa) --- addons/crm/data/ir_action_data.xml | 9 ++------- addons/crm/models/crm_lead.py | 7 +++++++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/addons/crm/data/ir_action_data.xml b/addons/crm/data/ir_action_data.xml index b9c81a58f9f..e522a52b5a3 100644 --- a/addons/crm/data/ir_action_data.xml +++ b/addons/crm/data/ir_action_data.xml @@ -4,18 +4,13 @@ - + Mark as lost list code - -if record: - action_values = env.ref('crm.crm_lead_lost_action').sudo().read()[0] - action_values.update({'context': env.context}) - action = action_values - + action = model.action_set_lost_with_reason() diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index d4384efd4c2..e57f58cf522 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -4,6 +4,7 @@ import logging import pytz import threading +from ast import literal_eval from collections import OrderedDict, defaultdict from datetime import date, datetime, timedelta from markupsafe import Markup @@ -997,6 +998,12 @@ class Lead(models.Model): self.write(dict(additional_values)) return res + @api.model + def action_set_lost_with_reason(self): + action = self.env['ir.actions.act_window']._for_xml_id('crm.crm_lead_lost_action') + action.update({'context': {**self.env.context, **literal_eval(action.get('context', '{}'))}}) + return action + def action_set_won(self): """ Won semantic: probability = 100 (active untouched) """ self.action_unarchive()