Odoo Help

Welcome!

This community 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.

1

Is it possible to hide fields from tree view based on some condition?

By
Yogesh
on 7/22/13, 9:34 AM 3,642 views

I am working on 'stock.picking' there is a one2many field 'move_ids'. I need to add two more attributes in this field. But I need to show these two attributes in case of picking is returned. There is nothing in object to know if the picking is of return. neither in parent nor in child object.

So I made a selection field named 'type_return' with values 'return' and 'non_return' and two more fields ' attrib1' and 'attrib2' Now I need to show these fields in tree view* [ <tree editable="bottom"> ]* just in case of picking is returned. this I can know by value of 'type_return'.

I used: attrs="{'invisible':[('type_return', '!=', 'return')]}" .But it did not work for me.

Can someone help me, how to solve this issue?

what attrs="{'invisible':[('type_return', '!=', 'return')]}" it does is makes fields readonly when type is 'return' but doesn't make invisible from tree.

Yogesh
on 7/22/13, 9:36 AM
1
Abhishek
On 7/22/13, 10:01 AM

Hi Yogesh,

I am giving you a similar py code , here i used this to hide two field with a condition in account_invoice.py To hide few column in tree view of account invoice, may be it help to you .....

    if view_type == 'tree':
        partner_string = _('Customer')
        if context.get('type', 'out_invoice') in ('in_invoice', 'in_refund'):
            partner_string = _('Supplier')
            for node in doc.xpath("//field[@name='reference']"):
                node.set('invisible', '0')
        for node in doc.xpath("//field[@name='partner_id']"):
            node.set('string', partner_string)
            if partner_string =='Customer' :
                                    print "abhishek"
                                    for node in doc.xpath("//field[@name='s_invoice']"):
                                            node.set('invisible', 'True')
                                            doc.remove(node)
                                    for node in doc.xpath("//field[@name='origin']"):
                                            node.set('invisible', 'True')
                                            doc.remove(node)
                                            print "abhishek"#, stop 
        res['arch'] = etree.tostring(doc)
    return res

If this help then let me ..

@Abhishek: thanks for your reply but In my case fields_view_get never gets called because it is a child's object (o2m) tree view with editable="bottom"

Yogesh
on 7/29/13, 3:49 AM

Facing Same problem

Jagdish Panchal
on 12/4/13, 5:58 AM

@Abhishek: In case of Employees list when this function fields_view_get is called?

dirtyHandsPHP
on 10/15/14, 8:18 AM
0
Manuel Llano
On 5/1/15, 2:08 PM

Look this:

http://vitraining.com/show-hide-columns-in-openerp-tree-view-xml

Works fine for me.

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

2 follower(s)

Stats

Asked: 7/22/13, 9:34 AM
Seen: 3642 times
Last updated: 5/1/15, 2:08 PM