To explain how to create multi views for one model in Odoo
let us say that we create estate module which is depends on the project standard module and we want to store the estate project data inside the 'project.project' model from project module but it has different fields and view than the standard projects so
first : we will inherit the "project.project" model and add selection field which we will use as domain inside the actions views
# -*- coding: utf-8 -*-
from odoo import fields, models, api, _
class projectProject(models.Model):
_name = 'project.project'
_inherit = ['project.project','mail.thread']
_description = 'Project models inherit'
project_type = fields.Selection([
('project','Project'),
('estate_project','Estate Project')],
default='project',
string="Type"
)
second : we will over write the standard projects action view to add domain in-order to display the records with "project_type = "project"
<record id="project.open_view_project_all" model="ir.actions.act_window">
<field name="name">Projects</field>
<field name="res_model">project.project</field>
<field name="domain">[('project_type','=','project')]</field>
<field name="context">{'default_project_type':'project'}</field>
<field name="view_mode">kanban,form</field>
<field name="view_id" ref="project.view_project_kanban"/>
<field name="search_view_id" ref="project.view_project_project_filter"/>
<field name="target">main</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No projects found. Let's create one!
</p><p>
Projects regroup tasks on the same topic and each have their own dashboard.
</p>
</field>
</record>
Third : we will create the estate project own views as bellow
<record id="estate_project_form_view" model="ir.ui.view">
<field name="name">auction.form</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<form string="Estate Project">
</form>
</field>
</record>
<record id="estate_project_tree_view" model="ir.ui.view">
<field name="name">estate.project.tree</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<tree string="Estate Projects">
</tree>
</field>
</record>
<record model="ir.ui.view" id="estate_project_kanban_view">
<field name="name">project.project.kanban</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<kanban>
</kanban>
</field>
</record>
<record id="estate_project_act_window" model="ir.actions.act_window">
<field name="name">Estate Projects</field>
<field name="res_model">project.project</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('estate_project_tree_view')}),
(0, 0, {'view_mode': 'kanban', 'view_id': ref('estate_project_kanban_view')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('estate_project_form_view')})]"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
There is no examples click here to add new Auction.
</p>
</field>
<field name="domain">[('project_type','=','estate_project')]</field>
<field name="context">{'default_project_type':'estate_project'}</field>
</record>
<menuitem
name="Estate Projects"
id="estate_project_menu"
action="estate_project_act_window"
/>
No comments:
Post a Comment