This question has been flagged
3 Replies
7231 Views

I want to set some record rules to restrict employees to view only their profile and their subordinates profiles. No one else out of a particular employee's subordinate hierarchy should be displayed to him. For example, this is my employee hierarchy.

  • Alex
    • Benjamin
      • David
      • Edward
        • Ivan
        • Jack
      • Frank
    • Charles
      • George
      • Henry

When Alex logged in, he should be able to see all the employees. When Benjamin logged in, he should be able to see his profile and David's, Edward's, Frank's, Ivan's and Jack's profiles only. When David logged in, he should be able to see his profile only.

I have tried the following record rules on Employee object:

  1. [('user_id','=',user.id)] Allows to see logged in user's profile only.
  2. [('parent_id.user_id','=',user.id)] Allows to see immediate subordinates only. That means, when Alex logged in, he can see Benjamin and Charles only, not the in depth hierarchy.
  3. [('child_ids','child_of', [user.id])] It gives a view of logged in user, his first immediate subordinate, first next level subordinate. That means, when Alex logged in, he can see his profile, Benjamin's profile and David's profile only.

I still couldn't work out a way to satisfy my requirement. Any help would be appreciated.

Thank you very much!

Avatar
Discard

Thank you very very much Bruno! It really worked! Just the way I wanted. Thank you!

Best Answer

Hello Mudi Vand,

Your problem is that you try to apply a child_of on res.users model (which have not parent hierarchy, as long as i know).

Have you tried to use ONLY this rule: 

[('id', 'child_of', [employee.id for employee in user.employee_ids])]

With that, i think it will filter the Employees using the employee "profile" of the current user. The child_of will be applied to the hr.employee model (which have parent_id field, the default field to be used by child_of operator).

Does it work ?

Regards

Avatar
Discard
Best Answer

Where I should apply the obove rule

I mean witch group of users

Regards, 

Avatar
Discard