Skip to main content

Multi-Steps Wizards

Project description

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>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Built Distribution

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page