Multi-Steps Wizards
Technical Name:
multi_step_wizard
License:
Author:
Maintainer:
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>
This is a preview of the recently viewed products by the user.
Once the user has seen at least one product this snippet will be visible.
Once the user has seen at least one product this snippet will be visible.