Search code examples
pythonodoo-12

How to sort position stages using default_group_by field selection of kanban view in Odoo 12


I define stages of kanban view by selection field, like this:

state = fields.Selection([
    ('draft', 'Draft'),
    ('open', 'Open'),
    ('pending', 'Pending'),
    ('cancel', 'Cancelled'),
    ('done', 'Done')],
    'State',
    default='draft'
)

So I use default_group_by in xml to show this stages:

<kanban string="Kanban Sprint" default_group_by="state">
            <field name="name"/>
            <field name="state"/>

I want it sorts Draft>Open>Pending>Cancelled>Done.

But it sorts by alphabet: Cancelled>Done>Draft>Open>Pending. Image here

So is there a way to sort them?


Solution

  • you can use group_expand method to set the order:

    state = fields.Selection([
        ('draft', 'Draft'),
        ('open', 'Open'),
        ('pending', 'Pending'),
        ('cancel', 'Cancelled'),
        ('done', 'Done')],
        'State',
        group_expand='_expand_groups',
        default='draft'
    )
    
    @api.model
    def _expand_groups(self, states, domain, order):
        return ['draft', 'open', 'pending', 'cancel', 'done']