【问题标题】:Change Filter privilege in Odoo 9.0在 Odoo 9.0 中更改过滤器权限
【发布时间】:2016-01-17 04:39:07
【问题描述】:

我正在修改 Odoo 9.0 中的休假管理模块,因为当我创建员工用户时,我无法限制用户查看其他员工的休假。所以在我的情况下,他们能够看到每个员工离开所以我应该给予什么样的限制,这样他们就看不到其他人的离开请求而只能看到他们自己的请求。 我已经尝试向用户授予权限,但它对我不起作用 是否对文件或权限或任何其他解决方案进行任何类型的更改。

i want to restrict employee to view others leave

如图所示,当我删除过滤器时,我可以看到每个员工的离职请求。我想从员工的角度限​​制这一点,所以我该怎么做

【问题讨论】:

  • 把你的代码放在你的问题中.....
  • @JainikPatel 我想限制员工用户只看到他自己的休假请求,而不是全部。当我删除过滤器时,员工用户能够看到所有的请假请求,所以请帮助我

标签: python openerp odoo-8 odoo-9 odoo-view


【解决方案1】:

OpenERP 有两种可以分配给用户组的安全限制:

  • 访问权限是 CRUD 是/否标志(类似于 Unix FS 权限),并允许按模型访问控制。它们说明该组的成员是否可以对特定文档模型的任何文档(例如项目任务)执行创建、读取、更新和删除操作。默认策略是拒绝,因此默认情况下,如果用户没有通过她的组的访问权限明确有权执行任何操作,则任何操作都将被拒绝。
  • 记录规则是应用于 CRUD 操作的过滤器,一旦已授予访问权限,就允许对每个文档进行访问控制。如果文档与至少一个记录规则匹配,用户将只能对给定文档执行操作。默认策略是 ALLOW,因此如果给定模型不存在规则,则具有必要访问权限的用户可以访问该模型的所有文档。

访问权限和记录规则也可以在全局范围内定义,而无需将它们分配给特定组,在这种情况下它们适用于所有人。记录规则有一个陷阱:全局规则可能不会被其他规则放松(故意!),因此请谨慎使用。

在您的情况下,您似乎应该在项目用户组上定义一个额外的记录规则,明确限制对项目任务的访问权限为您自己的任务(可能还有那些尚未分配的任务)。您需要使用以下参数在“安全规则”菜单中创建一个新条目:

  • 对象/模型:project.task
  • 域:['|',('user_id','=',False),('user_id','=',user.id)]
    • (表示:您自己的任务和未分配的任务)
  • 申请阅读:[x]
  • 申请写:[x]
  • 申请创建:[x]
  • 申请删除:[x]
  • 群组:Project / User

记录规则的是一个标准的 OpenERP 域,它在您尝试对其执行操作的记录上进行评估,并且可以引用 用户包含当前用户数据的变量(从技术上讲,当前用户的 browse_record)。在 ORM 方法列表中查找 search() 以获取 domain 的完整描述。

如果您想允许特殊用户(例如项目经理)查看系统中的所有任务,您可以通过向项目经理组添加另一条允许访问所有任务的规则来放松此规则。有一个特殊的“域过滤器”,意思是“允许所有”,有助于放宽另一个更严格的规则:[(1,'=',1)]

注意:请先查看现有的记录规则以了解它们在做什么,并确保在添加您的规则时阅读记录规则表单上的说明。请记住,如果您在访问权限和记录规则方面做错了事,您始终可以使用 admin 帐户来解决问题,因为这些安全限制不适用于 admin (类似于 Unix 上的 root 用户)。

【讨论】:

  • 感谢您的回复。请再次查找帖子我已经制定了一些规范并编辑了我的帖子,也找到了附件。
【解决方案2】:

在您的情况下,我们将为 hr.holidays 模型添加新的安全记录规则

<record model="ir.rule" id="per_employee_user_rule">
    <field name="name">Employee: see the individual Record</field>
    <field name="model_id" ref="hr_holidays.model_hr_holidays"/>
    <field name="domain_force">['|',('employee_id.user_id','=',False),('employee_id.user_id','=',user.id)]</field>
    <field name="groups" eval="[(4,ref('base.group_user'))]"/>
</record>

听说我们正在根据员工表单获取 user_id。它完全是 Odoo Employee 表单视图中相关 user_id 字段的一部分,仅当我们将员工登录分配给特定用户时才有用。

希望我的回答对你有帮助:)

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多