▷ Odoo colocar colores en vistas tree
Se utilizan los atributos decoration-* para colocar colores en las vistas Tree o de lista en Odoo. Estos atributos se colocan en la etiqueta tree de la vista y reciben una condición en Python: cuando la condición se cumple, la fila completa se muestra con el color correspondiente. A continuación se muestra una imagen y un ejemplo:
Colores:
- decoration-muted = color gris
- decoration-warning = color amarillo
- decoration-danger = color rojo
- decoration-primary = color azul
- decoration-success = color verde
Ejemplo:
<tree js_class="ticket_list_dashboard"
decoration-muted="state == 'resuelto'"
decoration-warning="state == 'stop'"
decoration-danger="state == 'borrador'"
decoration-primary="state=='aprobado'"
decoration-success="state=='trabajando'">
Y todo el código de la vista tree quedaría así:
<record id="view_tree_ticket_pro" model="ir.ui.view">
<field name="name">view.tree.ticket.pro</field>
<field name="model">ticket.pro</field>
<field name="arch" type="xml">
<tree js_class="ticket_list_dashboard"
decoration-muted="state == 'resuelto'"
decoration-warning="state == 'stop'"
decoration-danger="state == 'borrador'"
decoration-primary="state=='aprobado'"
decoration-success="state=='trabajando'">
<field name="name"/>
<field name="title"/>
<field name="prioridad" optional="show"/>
<field name="environment" optional="show"/>
<field name="numerical_priority" optional="show" string="P" sum="sum"/>
<field name="user_id" widget="many2one_avatar_user" optional="hide"/>
<field name="user_error_id" widget="many2one_avatar_user" optional="show"/>
<field name="user_work_id" optional="hidden" widget="many2one_avatar_user"/>
<field name="entry_date" optional="show"/>
<field name="end_will_end" optional="hide"/>
<field name="hours" sum="Total" optional="hidden"/>
<field name="price" sum="Total" optional="hidden"/>
<field name="end_date" optional="hidden"/>
<field name="char_note" optional="hidden"/>
<field name="advance" optional="show"/>
<field name="category_id" optional="show"/>
<field name="project_id" optional="hidden"/>
<field name="tproject_state_id" optional="hidden"/>
<field name="sprint_id" optional="show"/>
<field name="numero_veces" sum="Total" optional="show"/>
<field name="frequent_question_id" optional="hidden"/>
<field name="ticket_id" optional="hide"/>
<field name="calificacion" widget="priority" optional="hide"/>
<field name="clasificacion" optional="show"/>
<field name="type" optional="hidden"/>
<field name="note_id" optional="hidden"/>
<field name="module_odoo" optional="hidden"/>
<field name="user_task_id" optional="show"/>
<field name="contract_type" optional="hide"/>
<field name="state"
decoration-danger="state == 'borrador'"
decoration-warning="state == 'aprobado'"
decoration-success="state == 'resuelto' or state == 'calificado'" widget="badge"/>
</tree>
</field>
</record>
Fíjate en que los atributos decoration-* también se pueden aplicar a un campo concreto, como ocurre con el campo state junto con el widget badge, para colorear solo esa columna en lugar de toda la fila.
