【问题标题】:OpenERP (XML) - hide view depending on access rights groupOpenERP (XML) - 根据访问权限组隐藏视图
【发布时间】:2026-02-17 05:35:01
【问题描述】:

我需要隐藏我为没有特定访问权限组的用户创建的视图。我知道我可以为我在视图中添加的每个字段使用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。该字段的帮助说:空=每个用户都可以看到此视图;条目:只有注册的组才能看到视图。但我测试了它,它不工作。

标签: xml view hide openerp


【解决方案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?

【讨论】:

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