Odoo员工模块记录规则调整:HR权限适配需求
Odoo员工仪表盘权限规则修正方案
问题分析
你之前的规则逻辑错误导致权限不符合预期:
- 原规则
['|',('id', 'child_of', [employee.id for employee in user.employee_ids ]),('department_id', '!=', 3)]的逻辑是只要员工是当前用户的下属,或者员工部门不是3,就允许查看。这会导致:- 非HR部门(ID≠3)的普通员工,因为满足
department_id !=3,能查看所有员工,违反了“仅经理/主管可查看层级下属”的要求; - HR部门(ID=3)的用户,因为不满足
department_id !=3,只能查看自己的下属,无法查看所有员工。
- 非HR部门(ID≠3)的普通员工,因为满足
正确权限规则代码
替换为以下domain规则,实现HR部门用户可查看所有员工,非HR部门用户仅能查看自身下属层级的需求:
['|', ('id', 'child_of', [employee.id for employee in user.employee_ids]), user.employee_ids.department_id.id == 3 ]
规则逻辑说明
- 第一个条件:
('id', 'child_of', ...),保留原规则逻辑,非HR部门用户仅能查看自身下属层级; - 第二个条件:
user.employee_ids.department_id.id ==3,判断当前用户所属部门为HR部门(ID=3),满足此条件的用户可查看所有员工; - 整个规则用
|(逻辑或)连接,只要满足其中一个条件即可查看对应员工。
补充说明
如果你的HR部门是通过用户组而非部门ID区分,可将第二个条件替换为用户组判断,例如:
['|', ('id', 'child_of', [employee.id for employee in user.employee_ids]), ('user_has_group', 'hr.group_hr_manager') ]
内容的提问来源于stack exchange,提问作者waqas chughtai
相关产品推荐
相关产品推荐

