Odoo Help
Odoo is the world's easiest all-in-one management software. It includes hundreds of business apps:
CRM
|
e-Commerce
|
Accounting
|
Inventory
|
PoS
|
Project management
|
MRP
|
etc.
fields_view_get() dinamically modify view (one2many tree view)
I'm trying to modify layout of the tree view for one2many field in sale.order.
This is my code,
@api.model
def fields_view_get(self, view_id=None, view_type=False, context=None,
toolbar=False, submenu=False):
res = super(saleOrder,
self).fields_view_get(view_id=view_id, view_type=view_type,
toolbar=toolbar, submenu=submenu)
if view_type == 'form':
doc = etree.XML(res['arch'])
for node in doc.xpath("//field[@name='order_line']/tree//field[@name='product_id']"):
node.set('invisible', 'True')
res['arch'] = etree.tostring(doc)
return res
After debug, only //field[@name='order_line'], appears.
can't find 'product_id'.
Try below code
if view_type =='form':
doc = etree.XML(result['fields']['order_line']['views']['tree']['arch'])
node = doc.xpath("//field[@name='product_id']")[0]
node.set('invisible','1')
result['fields']['order_line']['views']['tree']['arch'] = etree.tostring(doc)
return result
Hope it will help you.
try this.
from openerp.osv.orm import setup_modifiers
if doc.xpath("//field[@name='order_line']/tree//field[@name='product_id']"):
node = doc.xpath("//field[@name='order_line']/tree//field[@name='product_id']")[0]
node.set('invisible', '1')
setup_modifiers(node, res['fields']['product_id'])
res['arch'] = etree.tostring(doc)
return res
OR
<xpath expr="//field[@name='order_line']//tree//field[@name='product_id']" position="attributes">
attribute name="invisible">1</attribute>
</xpath>
I hope it's useful for you.
Thanks in advance for your help,
the problem is that
doc.xpath("//field[@name='order_line']/tree//field[@name='product_id']")
returns an empty element, [ ]
only finds
doc.xpath("//field[@name='order_line']")
cannot find the elements of the one2many field 'order_line'.
Kind regards.
batter so you can use xpath from form view like
<xpath expr="//field[@name='order_line']/tree//field[@name='product_id']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
About This Community
This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.
RegisterOdoo Training Center
Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.
Test it nowQuestion tools
Stats
Asked: 6/20/16, 5:54 AM |
Seen: 1457 times |
Last updated: 1/29/18, 5:20 AM |