Odoo Development

Mayank Parashar
1 min readJun 20, 2021

How to call wizards by python code:

  1. Create a “wizards_name.py” file in wizards directory.

Example —

from odoo import models, fields, api, _

class NewWizard(models.TransientModel):

_name = "new.wizard"
_description = "New Wizard"
name = fields.Char(string="Name")

2. Create a wizard view in wizards directory “wizard_name.xml”.

Example —

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="new_wizard_form" model="ir.ui.view">
<field name="name">new.wizard.form</field>
<field name="model">new.wizard</field>
<field name="arch" type="xml">
<form string="Some Information">
<field name="name">
</field>
<footer>
<button string="Cancel" special="cancel" class="btn-secondary"/>
</footer>
</form>
</field>
</record>

<record id="new_wizard_action" model="ir.actions.act_window">
<field name="name">New Wizard Action</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">new.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="new_wizard_form"/>
<field name="target">new</field>
<field name="domain">[]</field>
<field name="context">{}</field>
</record>
</odoo>

3. Create a “model_name.py” in models directory in models directory.

4. Define _call_wizard_ method

Example —

def _call_wizard(self):
view = self.env.ref('new_wizard_form')
view_main = self.env['new.wizard']
field = view_main['name']
return {
'name': _("New Wizard"),
'view_mode': 'form',
'view_id': view.id,
'res_id': field.id,
'view_type': 'form',
'res_model': 'new.wizard',
'type': 'ir.actions.act_window',
'target': 'new',
}

5. return _call_wizard_ method from any other method in model_name.py file.

--

--