【问题标题】:Two rules for one model一个模型的两个规则
【发布时间】:2017-07-14 13:55:20
【问题描述】:

我需要使用两个groupsres_partner 表上应用两个规则

群组:StaffManager

菜单项:Customer 和“员工”

型号:res_partner 用于两个视图。

  1. Staff 组中的用户只能看到staff 菜单详细信息(只读权限)
  2. 但他们需要拥有对Customer 的完全访问权限(读取、写入、创建和取消链接)
  3. Manager 中的用户应该拥有对这两个视图的完全访问权限。

我试过下面的代码

 <record model="ir.rule" id="staff_staff_rule">
    <field name="name">Readonly for staff</field>
    <field name="model_id" ref="base.model_res_partner"/>
    <field name="domain_force">[(1,'=',1)]</field>
    <field name="perm_create" eval="False"/>
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="False"/>
    <field name="perm_unlink" eval="False"/>
    <field name="groups" eval="[(4, ref('appartment.group_appartment_staff'))]"/>
  </record>

但用户仍然可以创建、编辑、读取和删除员工组中的记录。

我怎样才能做到这一点。

【问题讨论】:

    标签: openerp odoo-10


    【解决方案1】:

    您应该提供仅显示员工的正确域。当你把 一个域,您表明该组只允许读取该记录。

    <record model="ir.rule" id="staff_staff_rule">
        <field name="name">Readonly for staff</field>
        <field name="model_id" ref="base.model_res_partner"/>
                             <!-- put the right domain -->
        <field name="domain_force">[('partner_type','=', 'staff')]</field>
        <field name="perm_create" eval="False"/>
        <field name="perm_read" eval="True"/>
        <field name="perm_write" eval="False"/>
        <field name="perm_unlink" eval="False"/>
        <field name="groups" eval="[(4, ref('appartment.group_appartment_staff'))]"/>
      </record>
    

    【讨论】:

      【解决方案2】:

      我认为使用 csv(安全访问文件)可以轻松完成。 您可以直接从 csv 文件管理这种情况,并且您需要将该文件添加到 openerp.py / ma​​nifest.py 文件中。

      CSV 文件示例

      id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
      access_res_partner,res_partner_user_access,model_res_partner,appartment.group_appartment_staff,1,0,0,0   
      access_manager_res_partner,res_partner_manager_access,model_res_partner,appartment.group_appartment_manager,1,1,1,1 
      

      规则

      规则用于在每个记录上应用条件 一直在尝试访问。

      访问控制列表

      ir.model.access / 访问控制列表用于管理权限 (只有模型访问用户是否可以读/写/创建/删除或 不是)。

      @Cherif Odoo 已经解释了规则,这里是访问控制列表。通过这两种方式odoo管理证券。

      【讨论】:

      • 感谢 Emipro。但我的要求是,staff 组应该有权创建、编辑、删除和读取客户视图,但 Staff view 只能读取。两个视图都使用相同的模型res.partner
      • 它会和你刚才解释的一样。
      • Emipro,忘记组manager,只考虑组staff。根据您的回答access list 应该是access_res_partner,res_partner_user_access,model_res_partner,appartment.group_appartment_staff,1,0,0,0access_res_partner,res_partner_user_access,model_res_partner,appartment.group_appartment_staff,1,1,1,1。可行吗?
      • 我认为,这没有更多意义。通常,您也会遇到问题,因为您想为同一组的同一模型实现不同的行为。但是,您必须有唯一的标准(组或任何其他字段)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      相关资源
      最近更新 更多