在openerp中记录用户组的规则

时间:2013-05-22 04:55:06

标签: openerp

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

2 个答案:

答案 0 :(得分:0)

对于记录,如果您可以提供模型的详细信息,尤其是mat.mgmt模型的详细信息,则会更容易回答。也许这就是为什么还没有答案。

假设您在名为mat.mgmt的{​​{1}}和project.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

答案 1 :(得分:0)

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

说明:

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

但是经理可以看到所有用户的记录以及他可以创建的&amp;查看他自己的记录