为什么在<;menuitem组=''&燃气轮机;odoo 11中的标签和用途

为什么在<;menuitem组=''&燃气轮机;odoo 11中的标签和用途,odoo,Odoo,我试图在odoo11中创建自定义模块,但对menuitem中的组属性有点困惑 <menuitem id="product_menu_catalog" name="Catalog" action="product.product_template_action" parent="sale_menu_root" sequence="4" groups="sales_team.group_sale_

我试图在odoo11中创建自定义模块,但对menuitem中的属性有点困惑

<menuitem id="product_menu_catalog"
          name="Catalog"
          action="product.product_template_action"
          parent="sale_menu_root"
          sequence="4"
         groups="sales_team.group_sale_salesman"
/>

表示安全组,更多关于用户访问权的信息。转到“用户窗体视图”和“访问权限”选项卡,如果已部分激活调试开发人员模式,则将看到所有访问权限选项


如果您在菜单项中应用
,则菜单将仅对这些用户组可见。

组是一种语法糖要快速向菜单添加访问权限,您不仅可以在菜单中,还可以在
py
文件的字段定义中,也可以在视图中使用任何标记,
与Odoo中的安全和访问权限相关。为此组定义的所有内容都将对此组成员的用户可见

groups="goup1_xml_id1,goup1_xml_id2,..." 
它是如何工作的?

它以
模块类别开始,该类别应包含按模块分组的

  • 红外模块类别
代码取自。/odoo/addons/base/module/module_data.xml:(“销售”类别)

行中说,组
组销售人员
中的每个人都是
组用户
组二的一部分

  • ir.规则
然后,您可以创建一个规则,例如,该规则可以限制在特定模型中提供给组中用户的数据(以下代码中的模型:sale.order由
ref=“model\u sale\u order”
引用)

此外,在下面的代码中,sale.order中提供的数据将被过滤,以便用户只获取自己创建的订单或未定义用户id的订单

代码取自。/addons/sale/security

<record id="sale_order_personal_rule" model="ir.rule">
    <field name="name">Personal Orders</field>
    <field ref="model_sale_order" name="model_id"/>
    <field name="domain_force">['|',('user_id','=',user.id),('user_id','=',False)]</field>
    <field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
</record>
python代码中的

例如,在python代码中,您可以检查执行该方法的用户是否属于某个组,如
。/addons/sale/models/product\u product.py

@api.multi
def _sales_count(self):
    r = {}
    if not self.user_has_groups('sales_team.group_sale_salesman'):
        return r
    domain = [
        ('state', 'in', ['sale', 'done']),
        ('product_id', 'in', self.ids),
    ]
    for group in self.env['sale.report'].read_group(domain, ['product_id', 'product_uom_qty'], ['product_id']):
        r[group['product_id'][0]] = group['product_uom_qty']
    for product in self:
        product.sales_count = r.get(product.id, 0)
    return r
最后
作为@Charif DZ

“组”是一种语法糖,用于快速向菜单添加访问权限,您可以 不仅可以在菜单中执行此操作,还可以在py文件的字段定义中执行此操作 可在视图中使用的标记,
groups="goup1_xml_id1,goup1_xml_id2,..." 
如果您想从另一个模块的预定义字段中删除组,请在 组的XML-ID:

field\u name=fields.typeofield(groups=“-some\u xml\u group\u id”)


你可以在这里找到更多信息:######
<record id="sale_order_personal_rule" model="ir.rule">
    <field name="name">Personal Orders</field>
    <field ref="model_sale_order" name="model_id"/>
    <field name="domain_force">['|',('user_id','=',user.id),('user_id','=',False)]</field>
    <field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
</record>
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_analytic_default_salesman,account.analytic.default.salesman,model_account_analytic_default,sales_team.group_sale_salesman,1,1,1,1
@api.multi
def _sales_count(self):
    r = {}
    if not self.user_has_groups('sales_team.group_sale_salesman'):
        return r
    domain = [
        ('state', 'in', ['sale', 'done']),
        ('product_id', 'in', self.ids),
    ]
    for group in self.env['sale.report'].read_group(domain, ['product_id', 'product_uom_qty'], ['product_id']):
        r[group['product_id'][0]] = group['product_uom_qty']
    for product in self:
        product.sales_count = r.get(product.id, 0)
    return r
groups="goup1_xml_id1,goup1_xml_id2,..."