Konsola - dashboard

Konsolę (dashboard) buduje się w oparciu o widok typu Kanban. Jak każdy inny widok - musi on być związany z modelem, z którego pobiera się dane do wyświetlenia.

Zbudujmy najprostszy taki model (wyświetlamy tylko nazwę).

# -*- coding: utf-8 -*-
from odoo import _, api, fields, models

class MyBoardModel(models.Model):
    _name = 'demo.board'

    name = fields.Char('Name')
    show_on_dashboard = fields.Boolean('Show on d ashboard')

Zakładamy, że na konsoli pojawią się ramki z nazwami z tych rekordów, które mają ustawione show_on_dashboard. Zbudujmy odpowiedni widok do edycji tych danych:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
 <data>
        <record model="ir.ui.view" id="view_board_tree">
            <field name="name">board.tree.form.inherit</field>
            <field name="model">demo.board</field>
            <field name="arch" type="xml">
                <tree toolbar="1" string="Ramki">
                    <field name="name" />
                    <field name="show_on_dashboard"/>
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="view_board_form">
            <field name="name">board.form.inherit</field>
            <field name="model">demo.board</field>
            <field name="arch" type="xml">
                <form string="Ramki">
                  <group col="4">
                    <field name="name" />
                    <field name="show_on_dashboard"/>
                  </group>
                </form>
            </field>
        </record>

        <record id="demo_board_action_form" model="ir.actions.act_window">
            <field name="name">Ramki</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">demo.board</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="view_id" ref="view_board_tree"/>
        </record>

        <menuitem action="demo_board_action_form" id="demo_board_menu" />

    </data>
</odoo>

Na koniec możemy stworzyć widok konsoli:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
  <record id="demo_dashboard_kanban_view" model="ir.ui.view">
    <field name="name">test_dashboard_kanban_view</field>
    <field name="model">demo.board</field>
    <field name="arch" type="xml">
      <kanban create="false" class="oe_background_grey o_kanban_dashboard o_account_kanban">
        <field name="id"/>
        <templates>
          <t t-name="kanban-box">
            <div>
               <field name="name"/>
            </div>
          </t>
        </templates>
      </kanban>
    </field>
  </record>

  <record id="demo_dashboard_action"  model="ir.actions.act_window">
    <field name="name">My Dashboard</field>
        <field name="res_model">demo.board</field>
        <field name="view_type">form</field>
        <field name="view_mode">kanban,form</field>
        <field name="usage">menu</field>
        <field name="context">{}</field>
        <field name="domain">[('show_on_dashboard','=','True')]</field>  
  </record>
  <menuitem name="My Dashboard" id="demo_board_menu_config" 
             parent="demo_board_menu" 
             action="demo_dashboard_action" />
</odoo>

Aby zbudować bardziej złożoną konsolę, zapoznaj się z opisem.: https://webkul.com/blog/creating-odoo-custom-dashboard/