记录规则,允许用户更新自己的员工记录,而不属于官员组

时间:2013-10-17 01:58:38

标签: openerp

我正在尝试在OpenERP 7.0中定义记录规则,该记录规则允许不在Officer组中的用户仅更改其自己的Employee记录,同时仍保留现有的全局规则,允许Officer组中的用户具有完全权限。我已经设置了一个包含以下详细信息的自定义规则:

  • 名称:User_edit_own_employee_rule
  • 对象:员工
  • 申请阅读:已选中
  • 申请写:已选中
  • 规则定义:[('user_id', '=', user.id)]

但是,所有这些似乎都是删除用户读取除自己以外的任何Employee记录的能力。据我所知,我需要将此规则与逻辑OR运算符结合使用,并将Group规则应用于Officer组中的用户。谁能给我任何关于如何实现这个目标的指示?

编辑:因此我想要的行为是:

  • 所有用户(员工组)都可以搜索和阅读所有员工记录。
  • 员工组中的用户可以编辑自己的员工记录,但不能编辑其他人。
  • 官员组中的用户可以编辑所有员工记录(这是HR模块的默认行为)。

到目前为止尝试过:

  • 修改上述记录规则(User_edit_own_employee_rule)仅适用于Write操作,而不是Read操作(用户可以查看所有Employee记录,但不能编辑任何记录,包括他们自己的记录)。
  • 修改 hr.employee系统用户访问控制规则以允许写入操作(用户现在可以编辑所有员工记录)。

我的一个线索是,使用API​​在shell中返回员工的user_id,OpenERP返回[5, 'Joe Bloggs']。我想知道我的记录规则是否正确地查询了外键关系?

1 个答案:

答案 0 :(得分:3)

提供访问规则是解决方案的一部分。如果您查看“设置>技术>安全性>访问控制列表”中的“访问控制列表”,您可以看到组Hr员工只具有对模型hr.employee的读访问权限。因此,首先您必须提供写访问权限,以便为组Employee建模hr.employee。 在您允许对hreemployee模型组Employee进行写访问之后,

  • 从设置>创建新的记录规则技术>安全>记录规则名为User_edit_own_employee_rule(如您所愿)。
  • 为此组提供域名User_edit_own_employee_rule为[('user_id','=',user.id)]。此域名应该适用于读写。即;选中“申请阅读”和“申请写入”布尔字段。
  • 创建另一个名为User_edit_own_employee_rule_1
  • 的记录规则
  • 为此组提供域名User_edit_own_employee_rule为[('user_id','!=',user.id)]。此域名应该适用于只读。即;选中“申请阅读”。

现在,通过为Employee组创建两个记录规则,我们可以提供读取和写入自己记录的权限,但只能读取其他员工记录。

让我总结一下:

在访问控制列表中提供写访问权限,以便为组Employee建模hr.employee。创建两条记录规则:

User_edit_own_employee_rule:

  • 名称: User_edit_own_employee_rule
  • 对象:员工
  • 申请阅读:已选中
  • 申请写:已选中
  • 规则定义: [('user_id','=',user.id)]
  • 群组:人力资源/员工

User_edit_own_employee_rule_1:

  • 名称: User_edit_own_employee_rule_1
  • 对象:员工
  • 申请阅读:已选中
  • 申请写:取消选中
  • 规则定义: [('user_id','!=',user.id)]
  • 群组:人力资源/员工

希望这有助于......