【问题标题】:Record Rule for user groups in openerpopenerp 中用户组的记录规则
【发布时间】:2013-05-22 04:55:06
【问题描述】:

我在 openerp 中创建了一个新模块,其中包含与每个项目相关的消费细节。 我为我的模块创建了两个用户组(用户,经理)。用户可以创建项目的消费细节,他只能看到他创建的消费细节。 我给予这样的许可

<record id="property_rule_mat_mgmt_user" model="ir.rule">
            <field name="name">Material Manage Rule</field>
            <field model="ir.model" name="model_id" ref="model_mat_mgmt"/>
            <field name="domain_force">[('create_uid','=',user.id)]</field>
        </record>   

一切正常

同样,如果我指定一个用户作为我的模块的经理,他可以看到他是成员或经理的项目的所有消费细节。如何编写规则,我尝试了不同的方法,但找不到合适的规则。

这是我尝试过的规则之一

<record id="property_rule_mat_mgmt_manager" model="ir.rule">
            <field name="name">Material Manage manager Rule</field>
            <field model="ir.model" name="model_id" ref="project.model_project_project"/>
            <field name="domain_force">['|',('user_id','=',False),('user_id','=',user.id)]</field>
        </record>  

【问题讨论】:

    标签: openerp


    【解决方案1】:

    作为记录,如果您能提供模型的详细信息,特别是mat.mgmt 的详细信息,回答会更容易。也许这就是为什么还没有答案的原因。

    假设您在 mat.mgmtproject.project 之间有一个名为 project_id 的多对一关系,那么您可以使用以下内容:

    <record id="property_rule_mat_mgmt_manager" model="ir.rule">
                <field name="name">Material Manage manager Rule</field>
                <field model="ir.model" name="model_id" ref="model_mat_mgmt"/>
                <field name="domain_force">['|',('project_id.user_id','=',False),('project_id.user_id','=',user.id)]</field>
    </record>
    

    请注意,模型仍然是model_mat_mgmt,因为这是应用过滤的模型。如果我正确理解您的问题,您不想过滤项目而是 mat.mgmt

    【讨论】:

    • 我已更改此“采购选项卡组”删除对销售经理和用户的访问权限以查看产品中的采购选项卡 + 访问此采购选项卡上的信息(供应商名称、采购价格等) “但我也从采购和仓库的所有视图中丢失了采购选项卡,我使用此代码“group=sale.group_manager”
    【解决方案2】:
    <record id="user_record_rule_id" model="ir.rule">
        <field name="name">Record Rule Name</field>
        <field model="ir.model" name="model_id" ref="model_my_model_name"/>
        <field name="domain_force">[('create_uid', '=', user.id)]</field>
        <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="groups" eval="[(4,ref('group_user'))]"/>
    </record>
    
    <record id="manager_record_rule_id" model="ir.rule">
        <field name="name">Record Rule Name</field>
        <field model="ir.model" name="model_id" ref="model_my_model_name"/>
        <field name="domain_force">[]</field>
        <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="groups" eval="[(4,ref('group_manager'))]"/>
    </record>
    

    试试上面的代码:

    经理组应该继承自用户组

    示例:

    <record id="group_user" model="res.groups">
        <field name="name">User</field>
        <field name="category_id" ref="module_category_name"/>
    </record>
    <record id="group_manager" model="res.groups">
        <field name="name">Manager</field>
        <field name="implied_ids" eval="[(4, ref('group_user'))]"/>
        <field name="category_id" ref="module_exit_category"/>
        <field name="users" eval="[(4, ref('base.user_root'))]"/>
    </record>
    

    解释:

    用户可以创建记录,也可以只查看他的记录

    但经理可以查看所有用户的记录,也可以创建和查看自己的记录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多