【问题标题】:Access Rules on project.project Odoo11project.project Odoo11 上的访问规则
【发布时间】:2020-02-15 03:47:27
【问题描述】:

我有一个新小组(项目负责人)。这个小组需要阅读其他项目,并编写自己的项目。 示例:user1 是 project001 的经理,user2 是 project002 的经理。我们需要user1:只编辑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

【问题讨论】:

    标签: python xml odoo odoo-11


    【解决方案1】:

    您是否尝试过为每个记录规则使用两个不同的组并相应地分配用户

    <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>
    

    【讨论】:

    • 我无法得到结果。而且我们只需要一个组来映射所有经理。
    【解决方案2】:

    因为他们对每条记录都有读取权限,所以使用这个:

    <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)

    【讨论】:

    • 我已经试过你的技术仍然规则没有影响。你能给我任何参考吗?
    • 你使用了 noupdate 吗?您现在的访问权限有什么问题?小组是否看到其他记录?或者只有自己的项目
    • 不,我不使用任何更新。而且我已经在技术设置中进行了编辑。如果我使用 csv 所有文档都具有完全访问权限如果我删除 csv 所有文档对所有经理都具有仅编辑模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2013-12-22
    • 2018-04-20
    • 1970-01-01
    相关资源
    最近更新 更多