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



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

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

但是,所有这些似乎只是删除了用户读取除自己记录之外的任何员工记录的能力。据我所知,我需要将此规则与逻辑 OR 运算符结合使用,并将组规则应用于 Officer 组中的用户。谁能给我任何关于如何做到这一点的指示?

编辑:我想要的行为是:

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

到目前为止尝试过:

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

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

提供访问规则是解决方案的一部分。如果您查看"设置>技术>安全>访问控制列表"中的"访问控制列表",您可以看到组 hr 员工仅对模型 hr.employee 具有读取访问权限。因此,首先,您还必须为组员工提供对 hr.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为 [('user_id', '!=', user.id)]。并且此域应适用于只读。小选中"申请阅读"。

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

让我总结一下:

在访问控制列表中提供写入访问权限,以对组员工进行建模。创建两个记录规则:

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)]
  • 团体 : 人力资源/员工

希望这有帮助....

最新更新