只有在为用户分配了任务后,才会显示任务

时间:2012-06-08 08:15:45

标签: openerp

我只希望我已分配任务的人员在项目模块中查看任务。我不希望项目的其他用户看到这个人的任务。

但是,目前拥有用户访问权限的任何用户都可以查看所有任务,即使他们没有被分配。

有解决方法吗?

5 个答案:

答案 0 :(得分:17)

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

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

访问权限和记录规则也可以全局定义,而不将它们分配给特定组,在这种情况下,它们适用于每个人。记录规则有一个缺陷:全局规则可能不会被其他规则放宽(故意!),所以要小心使用。

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

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

记录规则的domain是一个标准的OpenERP域,它在您尝试执行操作的记录上进行评估,并且可以引用包含当前用户的user变量数据(从技术上讲,当前用户为browse_record)。有关search()的完整说明,请在ORM methods列表中查找domain

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

注意:查看现有的“记录规则”以查看他们首先要执行的操作,并确保在添加“记录规则”表单时阅读“记录规则”表单中的说明。请记住,如果您对访问权限和记录规则做错了,您可以随时使用admin帐户解决问题,因为这些安全限制不适用于admin(类似于{{ 1}}用户在Unix上。)

答案 1 :(得分:2)

注意:在OpenERP 7中,您必须修改或禁用名为

的defualt规则
  

项目/任务:员工:公共,门户,员工或以下或   分配

让你的规则有效。

答案 2 :(得分:1)

创建新的安全规则,选择对象为" project.task " ,将域过滤器设为 [(" user_id"," =",user.id)] 。无需添加任何组,因此它将是全局的。多数民众赞成!

答案 3 :(得分:1)

我的问题有点复杂。我希望有一些用户只能执行分配的任务,而有些用户也可以看到其余的任务。

在Odoo 11中,我发现标准项目用户继承了Employees \ Employee,而后者又具有规则Project/Task: employees: follow required for follower-only projects,该规则使用户可以查看其他任务。

我做了什么:

  1. 创建一个新组->复制Project / Users

  2. 根据 odony 的答案-> ['|',('user_id','=',False),('user_id','=',user.id)]

  3. 实施了规则
  4. Project/Task: employees: follow required for follower-only projects中删除了记录规则Employees / Employee并将其添加到Project / Users

现在,我可以决定谁是项目用户,谁可以看到项目的所有任务,谁是 worker ,谁只能看到分配给任务的任务他们。

答案 4 :(得分:0)

正如@ user1534055在openERP 7中已经指出的那样,它有点不同。

找到名为Project/Task: employees: public, portal, employee or following or assigned

的规则

Find the associated record rule

编辑它并从规则定义中删除('project_id.privacy_visibility', 'in', ['public', 'portal', 'employees']), '&',,然后点击保存。

此任务仅对那些已被分配的人员可见。