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

Vis*_*ani 6 openerp

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

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

有没有解决这个问题?

odo*_*ony 17

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

  • 访问权限是CRUD是/否标志(类似于Unix FS权限),并允许每个模型访问控制.它们说明该组的成员是否可以对某个文档模型的任何文档(例如项目任务)执行创建,读取,更新和删除操作.默认策略为DENY,因此,如果用户没有明确有权通过其中一个组的访问权限执行此操作,则默认情况下将拒绝任何操作.
  • 记录规则是应用于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方法列表中查找完整描述domain.

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

注意:查看现有的记录规则以查看它们首先要执行的操作,并确保在添加记录规则表单时阅读记录规则表单中的说明.请记住,如果您对访问权限和记录规则做了一些错误,您可以随时修复admin帐户的混乱,因为这些安全限制不适用于admin(类似于rootUnix 上的用户).