Vediamo come mostrare tutti gli stage di un Kanban in Odoo, anche se al loro interno non vi sono registrati dei record. Per Default non viene mostrato lo stage (la colonna per capirsi) finché quella specifica non riceve almeno un record. Il problema di fondo è che se uno stage momentaneamente non ha record, scompare e quindi non è possibile effettuare su di esso un drag and drop. Vedasi gli stage “registrato”, “in corso” e “completato” che sono generalmente stati di passaggio per un record.
Quindi come facciamo a mostrarli in modo indistinto? Partiamo dall’assunto che si parla di uno staging predefinito sul Model di Odoo, qual ora lo staging fosse una Many2One le cose sono un po’ diverse.
Prendiamo quindi un esempio più semplice, quello di una selection:
status = fields.Selection([
('registrato', 'Intervento Registrato'),
('iniziato', 'Intervento Iniziato'),
('comopletato', 'Intervento Completato'),
], string='Stato Lavorazione', default='registrato', group_expand='_group_expand_stages')
Come si può notare alla fine del campo è presente una opzione aggiuntiva, “group_expand” che richiamerà una funzione:
def _group_expand_stages(self, states, domain, order):
return [key for key, val in type(self).status.selection]
questa ci torna utile per iterare (ciclo for) i vari stati della Selection.
A questo punto nella view (file XML) il record che contiene il Kanban andrà istruito (nella parte iniziale) come segue:
<kanban default_group_by="status" class="o_kanban_small_column">
<field name="status"/>
<templates>
Faccio notare la presenza del default_group_by che richiama il campo “status” il quale a sua volta andrà ad espandere la “selection” tramite la funzione dedicata. Da ricordarsi che prima del tag “templates” va inserito il medesimo campo field.
Conclusioni
Quello esposto, come anticipato nei paragrafi iniziali, è un esempio semplificato, o per meglio dire statico. Nel senso che gli stati sono dichiarati nel model e quindi non possiamo modificargli il nome o aggiungerne di nuovi. Per fare questo è necessario avvalersi di una Many2one che vedremo in un futuro articolo.