Multi-Steps Wizards
by Camptocamp https://github.com/OCA/server-ux , Odoo Community Association (OCA) https://github.com/OCA/server-ux
Odoo
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 70 |
| Technical Name |
multi_step_wizard |
| License | AGPL-3 |
| Website | https://github.com/OCA/connector-jira |
| Versions | 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 |
Multi Steps Wizards
This module is a base for creating multi-steps wizards. It does nothing by itself.
Example of class:
class MyWizard(models.TransientModel):
_name = 'my.wizard'
_inherit = ['multi.step.wizard.mixin']
project_id = fields.Many2one(
comodel_name='project.project',
name="Project",
required=True,
ondelete='cascade',
default=lambda self: self._default_project_id(),
)
name = fields.Char()
field1 = fields.Char()
field2 = fields.Char()
field3 = fields.Char()
@api.model
def _selection_state(self):
return [
('start', 'Start'),
('configure', 'Configure'),
('custom', 'Customize'),
('final', 'Final'),
]
@api.model
def _default_project_id(self):
return self.env.context.get('active_id')
def state_exit_start(self):
self.state = 'configure'
def state_exit_configure(self):
self.state = 'custom'
def state_exit_custom(self):
self.state = 'final'
Example of view (note the mode, must be primary):
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="my_wizard_form" model="ir.ui.view">
<field name="name">my.wizard.form</field>
<field name="model">my.wizard</field>
<field name="mode">primary</field>
<field name="inherit_id" ref="multi_step_wizard.multi_step_wizard_form"/>
<field name="arch" type="xml">
<xpath expr="//footer" position="before">
<h1>
<field name="name"
attrs="{'readonly': [('state', '!=', 'start')]}"
class="oe_inline"
placeholder="Name"/>
</h1>
<group name="configure" attrs="{'invisible': [('state', '!=', 'configure')]}">
<group>
<field name="field1"/>
<field name="field2"/>
</group>
</group>
<group name="custom" attrs="{'invisible': [('state', '!=', 'custom')]}">
<group>
<field name="field3"/>
</group>
</group>
<div name="final" attrs="{'invisible': [('state', '!=', 'final')]}">
<p>The project is now configured.</p>
</div>
</xpath>
</field>
</record>
<act_window id="open_my_wizard"
name="My Wizard"
res_model="my.wizard"
src_model="project.project"
view_mode="form" target="new" view_type="form" />
</odoo>
Please log in to comment on this module