【问题标题】:Odoo ir.rule domain_force for group role depend on state用于组角色的 Odoo ir.rule domain_force 取决于状态
【发布时间】:2017-10-24 19:01:17
【问题描述】:

我有 3 个组角色:用户、经理和专家。并且需要状态为“已批准”的用户和管理员,并且“to_approve_second”没有写入权限。

所有用户都有写权限,并且有ir.rules:

    <field name="name">Follow Purchase Request</field>

    <field name="model_id" ref="model_purchase_request"/>

    <field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>

    <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">['|',('requested_by','=',user.id),

                                    ('message_partner_ids', 'in', [user.partner_id.id])]</field>

</record>



<record id="purchase_request_rule" model="ir.rule">

    <field name="name">Purchase Request User</field>

    <field name="model_id" ref="model_purchase_request"/>

    <field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>

    <field name="perm_read" eval="True"/>

    <field name="perm_write" eval="True"/>

    <field name="perm_create" eval="True"/>

    <field name="perm_unlink" eval="True"/>

    <field name="domain_force">[('requested_by','=',user.id)]</field>

</record>



<record id="purchase_request_manager_rule" model="ir.rule">

    <field name="name">Purchase Request Manager</field>

    <field name="model_id" ref="model_purchase_request"/>

    <field name="groups" eval="[(6,0, [ref('group_purchase_request_manager')])]"/>

    <field name="perm_read" eval="True"/>

    <field name="perm_write" eval="True"/>

    <field name="perm_create" eval="True"/>

    <field name="perm_unlink" eval="True"/>

</record>

我尝试添加:

    <field name="name">Purchase Request User Rule</field>

    <field name="model_id" ref="model_purchase_request"/>

    <field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>

    <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">[('state','in',('approved', 'to_approve_second'))]</field>

</record>

    <field name="name">Purchase Request Manager Rule</field>

    <field name="model_id" ref="model_purchase_request"/>

    <field name="groups" eval="[(6,0, [ref('group_purchase_request_manager')])]"/>

    <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">[('state','in',('approved', 'to_approve_second'))]</field>

</record>

但是什么也没发生。用户和经理可以在“已批准”和“to_approve_second”状态下编辑文档。 有什么问题?

【问题讨论】:

    标签: openerp odoo-9 access-rights


    【解决方案1】:

    我找到了一个可行的解决方案!

    <record id="purchase_request_followers_rule" model="ir.rule">
        <field name="name">Follow Purchase Request</field>
        <field name="model_id" ref="model_purchase_request"/>
        <field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
        <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">['|',('requested_by','=',user.id),
                                        ('message_partner_ids', 'in', [user.partner_id.id])]</field>
    </record>
    
    <record id="purchase_request_rule" model="ir.rule">
        <field name="name">Purchase Request User</field>
        <field name="model_id" ref="model_purchase_request"/>
        <field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
        <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">[('requested_by','=',user.id)]</field>
    </record>
    
    <record id="no_edit_rule" model="ir.rule">
        <field name="name">No Edit Rule</field>
        <field name="model_id" ref="model_purchase_request"/>
        <field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
        <field name="perm_read" eval="False"/>
        <field name="perm_write" eval="True"/>
        <field name="perm_create" eval="False"/>
        <field name="perm_unlink" eval="False"/>
        <field name="domain_force">[('requested_by','=',user.id),('state','not in',('approved', 'to_approve_second'))]
    

    <record id="purchase_request_manager_rule" model="ir.rule">
        <field name="name">Purchase Request Manager</field>
        <field name="model_id" ref="model_purchase_request"/>
        <field name="groups" eval="[(6,0, [ref('group_purchase_request_manager')])]"/>
        <field name="perm_read" eval="False"/>
        <field name="perm_write" eval="True"/>
        <field name="perm_create" eval="False"/>
        <field name="perm_unlink" eval="False"/>
        <field name="domain_force">[('assigned_to','=',user.id),('state','in',('to_approve_first', 'create_order'))]
    

    <record id="manager_manager_rule" model="ir.rule">
        <field name="name">Manager manager</field>
        <field name="model_id" ref="model_purchase_request"/>
        <field name="groups" eval="[(6,0, [ref('group_purchase_request_manager')])]"/>
        <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">[('assigned_to','=',user.id)]</field>
    </record>
    

    【讨论】:

      猜你喜欢
      • 2012-12-04
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多