OpenERP (XML) - 根据访问权限组隐藏视图

Posted

技术标签:

【中文标题】OpenERP (XML) - 根据访问权限组隐藏视图【英文标题】:OpenERP (XML) - hide view depending on access rights group 【发布时间】:2014-02-28 10:16:32 【问题描述】:

我需要隐藏我为没有特定访问权限组的用户创建的视图。我知道我可以为我在视图中添加的每个字段使用groups 属性,这样那些用户就不会看到它。但这是非常多余的,因为我需要隐藏该视图中的每个字段。所以也许有某种方法可以隐藏整个视图?在此示例中,它为每个字段隐藏,因为为这些字段添加了组。

   <record id="view_partner_additional_view" model="ir.ui.view">
        <field name="name">res.partner.patient.form.inherit</field>
        <field name="model">res.partner</field>
        <field name="priority">2</field>
        <field name="inherit_id" ref="base.view_partner_form"/>
        <field name="arch" type="xml">
           <label for="is_company" string="Is a Company?" position="after">
                <field name="is_something"                          
                    attrs="'invisible': [('is_company','=',True)]" 
                    groups="some_grp"/>             
                <field name="is_something2" 
                    attrs="'invisible': [('is_company','=',False)]" 
                    groups="some_grp"/>                 
           </label>
        </field>
    </record>

是否有可能以某种方式包装整个视图并定义它对没有“some_grp”访问权限组的用户不可见?我的意思是我需要添加组属性一次,而不是每个字段。我尝试使用div 包装所有内容,然后在其中添加groups 属性,但出现错误,因为您不能这样包装所有内容。

【问题讨论】:

模型 ir.ui.view 上有一个 groups_id 字段。你试过了吗?编辑:您也可以在 menuitems 中隐藏带有 groups_id 字段的整个菜单。 @CZoellner 我试图隐藏视图,而不是菜单。或者我不明白你的建议。 每个视图都有字段 groups_id。该字段的帮助说:空=每个用户都可以看到此视图;条目:只有注册的组才能看到视图。但我测试了它,它不工作。 【参考方案1】:

首先创建您的表单视图。然后继承视图也指定组。例如,在销售订单表单视图中,当状态不在草稿或已发送时,我想让组用户的客户参考字段只读。

<record id="view_order_form_cust_ref_readonly" model="ir.ui.view">
    <field name="name">sale.order.form.readonly.cust</field>
    <field name="model">sale.order</field>
    <field name="inherit_id" ref="sale.view_order_form"/>
    <field name="groups_id" eval="[(6, 0, [ref('base.group_user') ])]"/>
    <field name="arch" type="xml">
        <field name='client_order_ref'" position="attributes">
            <attribute name="attrs">'readonly':[('state','not in',['draft','sent'])]</attribute>
        </field>
    </field>
</record>

在您的情况下,首先创建一个对所有用户都通用的视图。然后继承带有组的视图,并为指定的组添加需要可见的字段。

参考How to make field readonly based on group and status?

【讨论】:

我想知道为什么无法为每个组指定单独的视图。为什么一定要继承? 如果您愿意,您可以创建单独的视图。但是您还必须创建单独的操作并将每个视图分配给它以使其正常工作

以上是关于OpenERP (XML) - 根据访问权限组隐藏视图的主要内容,如果未能解决你的问题,请参考以下文章

在 OpenERP 中,如何从父级(Many2One 对象)中显示或隐藏基于域的字段

如何根据数据库值显示设置访问权限和显示/隐藏 div

文件权限二(特殊权限隐藏属性文件访问控制列表切换用户方式)

如果用户没有权限,如何在登录后从菜单中隐藏Web表单?

XML 设计 OpenErp

使用xml-rpc调试openerp模块中的函数