I'm trying to open a wizard (form view) in a new browser tab after selecting leads in crm.lead's list view. For that,
In my inherited crm.lead model, I have the following code:
class CrmLead(models.Model):
_inherit = 'crm.lead'
@api.model
def action_open_analysis_tab(self):
lead_ids = self.env.context.get('active_ids', [])
if not lead_ids:
raise UserError("Please select at least one CRM Opportunity. (crm.lead)")
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
action = self.env.ref('crm_agg.action_groupby_lead_analysis_wizard')
# Context to pass to the wizard
context = {"default_lead_ids": lead_ids}
encoded_context = urllib.parse.quote(json.dumps(context))
# Build correct URL for act_window
url = (
f"{base_url}/web#"
f"action={action.id}"
f"&model=crm.groupby.lead.analysis.wizard"
f"&view_type=form"
f"&view_mode=form"
f"&target=new"
f"&context={encoded_context}"
)
return {
'type': 'ir.actions.act_url',
'url': url,
'target': 'new',
}
server action that calls the above code:
<record id="action_open_analysis_tab_server" model="ir.actions.server">
<field name="name">Analyze Opportunities (New Tab)</field>
<field name="model_id" ref="crm.model_crm_lead"/>
<field name="binding_model_id" ref="crm.model_crm_lead"/>
<field name="binding_type">action</field>
<field name="state">code</field>
<field name="code">action = records.action_open_analysis_tab()</field>
</record>
(I've tried action = env['crm.lead'].action_open_analysis_tab() as well, but doesn't work)
my groupby wizard:
class GroupByLeadAnalysisWizard(models.TransientModel):
_name = 'crm.groupby.lead.analysis.wizard'
_description = 'GroupBy Lead Analysis Wizard'
lead_ids = fields.Many2many('crm.lead', string="Leads")
# other fields .....
@api.model
def default_get(self, fields_list):
res = super().default_get(fields_list)
lead_ids = self.env.context.get('default_lead_ids')
if not lead_ids:
raise UserError("Please select at least one CRM Opportunity. (default_get method)")
res['lead_ids'] = [(6, 0, lead_ids)]
return res
The lead_ids are passed in crm.lead's action_open_analysis_tab, but they are not present in crm.groupby.lead.analysis.wizard's default_get.
How can I ensure that the context is passed?
Odoo v18 Community Edition