我有一个新小组(项目负责人)。该小组需要阅读其他项目,并编写自己的项目。 示例:user1是project001中的管理员,而user2是project002中的管理员。我们需要用户1:仅编辑project001,而他需要阅读project002。
我尝试了下面的代码,但是没有用。
以XML
<record id="group_project_lead" model="res.groups">
<field name="name">Lead</field>
<field name="category_id" ref="base.module_category_project_management"/>
</record>
<record id="project_project_lead_rule1" model="ir.rule">
<field name="name">Project: Lead to view only others document</field>
<field name="model_id" ref="project.model_project_project"/>
<field name="groups" eval="[(4, ref('project_user_access.group_project_lead'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('user_id','!=',user.id)]</field>
</record>
<record id="project_project_lead_rule2" model="ir.rule">
<field name="name">Project: Lead to write own document</field>
<field name="model_id" ref="project.model_project_project"/>
<field name="groups" eval="[(4, ref('project_user_access.group_project_lead'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('user_id','=',user.id)]</field>
</record>
在CSV中(尝试使用CSV和不使用CSV)
access_project_project_group_lead,project_project_group_lead,project.model_project_project,project_user_access.group_project_lead,1,1,1,1
答案 0 :(得分:0)
您是否尝试为每个记录规则使用两个不同的组并相应地分配用户
<record id="group_project_lead_others" model="res.groups">
<field name="name">Lead can view others</field>
<field name="category_id" ref="base.module_category_project_management"/>
</record>
<record id="group_project_lead_own" model="res.groups">
<field name="name">Lead can edit own</field>
<field name="category_id" ref="base.module_category_project_management"/>
</record>
<record id="project_project_lead_rule1" model="ir.rule">
<field name="name">Project: Lead to view only others document</field>
<field name="model_id" ref="project.model_project_project"/>
<field name="groups" eval="[(4, ref('project_user_access.group_project_lead_others'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('user_id','!=',user.id)]</field>
</record>
<record id="project_project_lead_rule2" model="ir.rule">
<field name="name">Project: Lead to write own document</field>
<field name="model_id" ref="project.model_project_project"/>
<field name="groups" eval="[(4, ref('project_user_access.group_project_lead_own'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('user_id','=',user.id)]</field>
</record>
答案 1 :(得分:0)
因为他们对每条记录都具有读取权限,所以请使用以下内容:
<record id="project_project_lead_rule1" model="ir.rule">
<field name="name">Project: Lead to view only others document</field>
<field name="model_id" ref="project.model_project_project"/>
<field name="groups" eval="[(4, ref('project_user_access.group_project_lead'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[(1,'=', 1)]</field>
</record>
执行此操作[('user_id','!=',user.id)]
时,是说该组只能只读
其他不存在的用户的项目,您可以['|', ('user_id','!=',user.id), ('user_id','=',user.id)]
执行此操作,但是
惯例是在没有条件阻止它们读取任何记录时使用此[(1,'=', 1)]
。
现在,因为只允许他们修改自己的项目:
<record id="project_project_lead_rule2" model="ir.rule">
<field name="name">Project: Lead to write own document</field>
<field name="model_id" ref="project.model_project_project"/>
<field name="groups" eval="[(4, ref('project_user_access.group_project_lead'))]"/>
<!-- apply this domain only in [write, create, unlink] permissions don't forget they are allowed to see other project-->
<field name="perm_read" eval="False"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
<field name="domain_force">[('user_id','=',user.id)]</field>
</record>
在访问写入文件时,您授予他们所有权限,因此请确保仅允许他们触摸那里的项目(write, create, delete)
。