Help

2

Hide tab from other user

Avatar
dirtyHandsPHP

I have created a tab using following code : 

<xpath expr="/form/sheet/notebook/page[@string='Academic &amp; Professional Details']" position="after">
                    <page string="Family Details" groups="base.group_user">
                        <group col="4" string="Family Details">
                            <field name="family_detail_ids" widget="one2many_list" colspan="4" nolabel="1">
                                <tree string="Family Details" editable="bottom">
                                    <field name="relation" />
                                    <field name="name" />
                                    <field name="qualification" />
                                    <field name="occupation" />
                                    <field name="dob" on_change="calculate_age(dob)"/>    
                                    <field name="age" />
                                    <field name="contact" />                                                                                              
                                </tree>                                                        
                            </field>
                        </group>                                                                                     
                    </page>                                        
</xpath>

groups="base.group_user" has been set.

As per group definition, I think this tab should be visible only to logged-in user so that he can view his information. Why logged-in user is able to see information of other users as well.??? Can anyone please explain or suggest me any solution??

Update : Because two employees belong to the same group so they can see the infomation. Can anyone please answer my flowing questions :

1) How employee can see his own one field say: blood_group but not of other employee. 

2) I am having two tabs : Public Information and Family Details. Logged-in employee should see his information under both these tabs and when he checks other's profile only Public Information tab should be visible

*Condition is both employees belong to the same group

Avatar
Discard
2 Answers
2
Avatar
deep
Best Answer

Hi ya, thanks for sending link, it was really tough to find out in Mail, for which question to answer back...

Well coming to your question, I agree with Piyush...

Q1: you want to hide a field "blood_group" for certain users and show to other users, but since both the users belonging to same group, you cannot achieve it...

Alternate solution: add a new group say "group_blood_details" on the column "blood_group", and then this group will be a Additional group for the user you want to give access ..

 

Q2: Is a interesting requirement, but i believe this you cant achieve neither using groups nor security rules..

Alternate solution: add a functional field [store is False] which evalutes and returns whether the user has to see it or not, say it returns True or False [boolean value].. then in xml for the tab [Family Details] using attrs set invisible property based on the functional field...

Hope this helps you...

5 Comments
Avatar
Discard
Avatar
dirtyHandsPHP
-

Hi Deep, thank you so much for replying back. Solution 1: Again both user will be related to same group so I think it will create the same situation Solution 2 : This one looks good. Let me work on that and will surely inform you as proceed.

Avatar
deep
-
Avatar
deep
-

Solution1 : you should one more additional group for only one user...

Avatar
deep
-

Say you would have had a group say "xxx" which you would have assigned to both user 1 & user 2..... now create one more new group say "YYY" and now you have to assign this group only one user who wants to see it, say user 1...

Avatar
dirtyHandsPHP
-

Hi Deep, thank you so much for replying back. Solution 1: Again both user will be related to same group so I think it will create the same situation Solution 2 : Much thanks Deep....Second solution really works..Thanks again.

2
Avatar
Piyush Suva
Best Answer

you have to create record rule for this.

you can inherit and override def fields_view_get method. in that you can add attribute 'invisible' on conditional basis.

10 Comments
Avatar
Discard
Avatar
dirtyHandsPHP
-

Thanks!!!!...which one?

Avatar
Piyush Suva
-

[('m2o of user of your object' )','=',user.id)] so that user can access only his related record .

Avatar
dirtyHandsPHP
-

I want user to access their subordinate details as well and for that record rules are already written...They are working fine but the concern is i want to hide one tab out of 4 tabs on condition basis....

Avatar
Piyush Suva
-

ohk bro.. i got your point. then you can inherit and override def fields_view_get method. in that you can add attribute 'invisible' on conditional basis.

Avatar
dirtyHandsPHP
-

I don't wanna set invisible on field basis, but on tab basis....

Avatar
Piyush Suva
-

yes bro You can on Tab also. just refer fields_view_get method

Avatar
Piyush Suva
-

I give you sample code for you. def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): if context is None:context = {} res = super(YOUR_MAIN_OBJECT_CLASS, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=False) if context.get('TEST_UID', False) == uid: doc = etree.XML(res['arch']) nodes = doc.xpath("//page[@name='family_details']") for node in nodes: node.set('invisible', '1') res['arch'] = etree.tostring(doc) return res

Avatar
dirtyHandsPHP
-

Much thanks Piyush....Your solution is good but not what i want....I am already hacing groups so want to set just groups = "group_name" attribute and it should behave as expected....You can check hr module this functionality is already working I just want to check why it's not working for group_users....

Avatar
Piyush Suva
-

i think group_users group for all employee, its basic group for employee, if person is employee then he have a 'group_user' rights. so, logged In user can see all record's 'Family Details' Tab. because he have a rights of group ' group_user',

Avatar
Piyush Suva
-

You can add one more group and assign this group to 'Family Details' tab.