mercredi 25 avril 2012

Liste des menus et leur XMLID pour OpenERP

Faire le réglage de la sécurité dans OpenERP, c'est assez merdique ! Surtout quand il y a une série de menus qui ne devraient pas être visibles et qui le sont !

Problème: lorsqu'on crée un utilisateur dans OpenERP avec des droits particuliers, il arrive qu'il reste des menus visibles alors qu'on ne le souhaite pas.

Cause: certains menus ne sont liés à aucun groupe et sont donc visible par tous les utilisateurs pour peu qu'ils aient des droits en lecture sur l'objet concerné.

Solution:

  1. modifier le menu afin de l'affecter à un groupe au moins.
  2. faire en sorte que les utilisateurs qui ne doivent pas voir ces menus ne soient pas dans ces groupes.

Malheureusement, cette solution n'est pas permanente, c'est-à-dire qu'il faut la refaire sur chaque DB. Pour éviter cela, le mieux est de faire un fichier XML qui modifie les menus simplement en installant un module. Ce fichier pourrait par exemple contenir le code suivant.


<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record id="mygroup" model="res.groups">
            <field name="name">My Group</field>
        </record>

        <!-- Ventes / Configuration -->
        <record id="base.menu_base_config" model="ir.ui.menu">
            <field name="groups_id" eval="[(4, mygroup)]"/>
        </record>
    </data>
</openerp>

Dernier problème: trouver les XMLID de tous les groupes à cacher! Je reconnais que la tâche peut être fastidieuse.
Mais je suis la pour vous aider: ce fichier est un script Python qui génère une liste (et/ou un arbre, au choix) des menus et affiche l'XMLID de chacun.
Son usage est relativement basique mais assez simple:

  1. Ouvrez le fichier avec votre éditeur préféré,
  2. Modifiez la ligne 89 pour indiquer les paramètre de votre DB,
  3. Commentez la ligne 92 ou 93, pour avoir soit l'arbre, soit la liste (optionnel),
  4. Exécutez le script (python openerp_menu_list.py).

Aucun commentaire:

Enregistrer un commentaire