Reputation: 769
I created a hierarchy view (parent-childs) for asset, now when I click an item in the list I'd like to open a form view of this item. Following code only opens a NEW form view, any ideas?
<record model="ir.actions.act_window" id="action_assets_hierachy">
<field name="name">Assets</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">asset.asset</field>
<field name="view_type">tree</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('parent_id','=',False)]</field>
</record>
<record id="assets_tree_view_inherit" model="ir.ui.view">
<field name="name">asset.asset.tree</field>
<field name="model">asset.asset</field>
<field name="inherit_id" ref="asset.assets_tree_view"/>
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<xpath expr="//tree" position="replace">
<tree toolbar="1">
<field icon="icon" name="asset_number"/>
<field name="display_name"/>
<field name="name"/>
<field name="user_id"/>
</tree>
</xpath>
</field>
</record>
<record id="asset_form" model="ir.actions.act_window">
<field name="name">Assets</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">asset.asset</field>
<field name="view_type">form</field>
<field name="view_mode">form,kanban</field>
</record>
<record id="ir_asset_form_open" model="ir.values">
<field eval="'tree_but_open'" name="key2"/>
<field eval="'asset.asset'" name="model"/>
<field name="name">Assets</field>
<field eval="'ir.actions.act_window,%d'%asset_form" name="value"/>
</record>
<menuitem name="Asset Hierarchy" id="asset_hierarchy" parent="asset.menu_maintenance_assets" action="action_assets_hierachy"/>
Upvotes: 0
Views: 1102
Reputation: 168
You need some sort of JavaScript modification to achieve this. There is a function called "activate" in web/treeview.js which handle the event when an item clicked. You need to extend it like this:
odoo.define('web.ListViewClickable', function (require) {
"use strict";
var TreeView = require('web.TreeView');
TreeView.include({
activate: function(id){
var self = this;
var result = self._super(id);
if (self.model == 'your_model'){ //Only if you want to apply this to specific model
self.do_action({
type: 'ir.actions.act_window',
res_model: self.model,
view_type: 'form',
view_mode: 'form',
res_id: id,
views: [[false, 'form']],
});
}
return result;
},
});
});
Upvotes: 1
Reputation: 3747
Remove the:
<record id="asset_form" model="ir.actions.act_window">
<field name="name">Assets</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">asset.asset</field>
<field name="view_type">form</field>
<field name="view_mode">form,kanban</field>
</record>
Why do you need this action?
Also, change the:
<record model="ir.actions.act_window" id="action_assets_hierachy">
<field name="name">Assets</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">asset.asset</field>
<field name="view_type">tree</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('parent_id','=',False)]</field>
</record>
to:
<record model="ir.actions.act_window" id="action_assets_hierachy">
<field name="name">Assets</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">asset.asset</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('parent_id','=',False)]</field>
</record>
Upvotes: 0