Odoo: Comment faire pour hériter des éléments de menu (en faire des éléments de menu invisible)
J'ai besoin de supprimer (ou de rendre invisible) un élément de menu.
Je suppose que cela doit être fait avec un hériter et xpath.
Mais je ne suis pas sûr du nom, modèle et inherit_id que je devrais utiliser. Où puis-je trouver les valeurs exactes de ces?
Aussi, je ne sais pas comment utiliser xpath correctement pour cela.
Autant que je sache, il y a seulement des expressions pour les pages, les groupes et les champs?
(http://www.odoo.yenthevg.com/xpath-expressions-in-odoo-8/)
Le menu qui doit être éliminée est de Variantes de Produits:
Dans addons/product/product_view.xml j'ai trouvé quelque chose qui pourrait avoir à faire avec elle.
Ligne 1:
<menuitem id="base.menu_product" name="Product Variants" parent="base.menu_base_partner" sequence="9"/>
ligne 444-446:
<menuitem action="variants_action"
id="menu_variants_action"
parent="product.prod_config_main" sequence="10" />
La façon dont j'ai essayé de faire le point de menu invisible dans mon propre views.xml:
<record model="ir.ui.view" id="menuproductvariants_inherit">
<field name="name">name">product.prod_config_main</field>
<field name="model">base.menu_product</field>
<field name="inherit_id" ref="product.product_template_only_form_view" />
<field name="arch" type="xml">
<xpath expr="//menuitem[@string='Product Variants']" position='replace'>
<menuitem name=""/>
</xpath>
</field>
</record>
L'erreur, il donne:
ParseError: "ValidateError
Field(s) `arch` failed against a constraint: Invalid view definition
Error details:
Element '<xpath expr="//menuitem[@string='Product Variants']">' cannot be located in parent view
Error context:
View `name">product.prod_config_main`
[view_id: 971, xml_id: n/a, model: base.menu_product, parent_id: 257]" while parsing /root/git/odoo/modulesdewieuw/dewieuw/views.xml:59, near
<record model="ir.ui.view" id="menuproductvariants_inherit">
<field name="name">name">product.prod_config_main</field>
<field name="model">base.menu_product</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//menuitem[@string='Product Variants']" position="replace">
<menuitem name=""/>
</xpath>
</field>
</record>
Edit: Après les conseils sur la fabrication d'un nouveau groupe, je l'ai essayé.
J'ai créé un groupe "verborgenmenus" et a ajouté un utilisateur.
Dans mon xml, j'ai mis tout cela, quelque part:
<menuitem id="base.menu_product" name="Product Variants" parent="base.menu_base_partner" sequence="9" groups="verborgenmenus"/>
Il me donne l'erreur suivante:
raise ValueError('External ID not found in the system: %s' % (xmlid))
ParseError: "External ID not found in the system: dewieuw.verborgenmenus" while parsing /root/git/odoo/modulesdewieuw/dewieuw/views.xml:34, near
<menuitem id="base.menu_product" name="Product Variants" parent="base.menu_base_partner" sequence="9" groups="verborgenmenus"/>
Ce qui est faux dans mon code?
Edit: je l'ai eu à la façon dont je voulais simplement en enlevant les utilisateurs du groupe Utilisabilité/Caractéristiques Techniques.
- Un menuitem n'est pas à l'intérieur d'un
ir.ui.view
. C'est dansir.ui.menu
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire un menuitem invisible dans Odoo comme s'il s'agissait d'un champ. Vous devez l'enlever avec la
delete
tag:Un moyen de le rendre invisible sans le supprimer, ajouter l'attribut
groups
à la menuitem, et y mettre un groupe dont les composantes sont uniquement les utilisateurs qui peuvent voir le menuitem. Si vous ne voulez pas n'importe quel utilisateur pour voir, puis créer un groupe vide et l'affecter l'attribut:Vous pouvez le supprimer comme ceci:
Mais il n'est pas recommandé, parce que peut-être un autre module tente d'y accéder. Au lieu de cela, vous pouvez l'ajouter à l'admin groupe pour la rendre invisible pour le reste des utilisateurs:
Mise à jour:
Dans votre cas, l'id de la menuitem devrait être
id="product.menu_products"
Vous devez également supprimer "la facilité d'utilisation/Caractéristiques Techniques" à partir de ce menu,..
Pour que Goto : Paramètres -> Interface Utilisateur -> Éléments de Menu.
Recherche : variantes d'un produit
ouvert en mode formulaire : supprimer "la facilité d'utilisation/Caractéristiques Techniques" du groupe de la grille.
En fait, étant donné un menuitem, ce est la bonne façon de cacher un menuitem à l'aide d'un "masquage" groupe
Cela fonctionne bien pour moi.
Bien sûr, vous pouvez aussi l'utiliser pour redéfinir d'autres de ses propriétés (parent, name, etc...)
La réponse de BBBagdiya son droit, je n'ai qu'à ajouter le nom de la propriété, parce que sa a un non-nulle contrainte.
Le code est:
Vous pouvez Masquer un menu par