Aller au contenu principal
Peef

← Articles · · Engineering Odoo

Mise en place des menus et des vues du module de consultation des livres

Hello!

Dans l'article précédent, nous avons mis en place les modèles du module sur lequel nous travaillons en ce moment: la consultation des livres. En gros, nous allons à ce niveau développer nos vues XML et y joindre des menus. Maintenant, allons tout droit au but:

On définit l’architecture globale de nos vues dans le fichier oo_library/views/oo_consultation_view.xml

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data>
        <!-- vos vues viennent ici -->
    </data>
</odoo>

Par la suite, tout ce que nous allons écrire sera dans l'attribut data, sachant que l'attribut xml permet de définir l'encodage.

Ensuite on écrit la vue formulaire pour obtenir ce résultat

<record id="oo_consultation_view_form" model="ir.ui.view">
    <field name="name">oo.consultation.view.form</field>
    <field name="model">oo.consultation</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group>
                    <group>
                        <field name="titre"/>
                        <field name="auteur_id"/>
                        <field name="genre_id"/>
                    </group>
                    <group>
                        <field name="editeur_id"/>
                        <field name="collection_id"/>
                        <field name="code_isbn"/>
                    </group>
                </group>
                <group string="Résumé">
                    <field name="resume" nolabel="1"/>
                </group>
            </sheet>
        </form>
    </field>
</record>

Petit commentaire:

  1. <record id="oo_consultation_view_form">: ici nous définissons l'ID de la vue qui sera stockée dans la table ir.ui.view.
  2. oo.consultation.view.form: on définit le nom de la vue; généralement pour faciliter le débogage, je préfère utiliser la nomenclature oo.consultation.view.form comme pour dire la vue formulaire du module consultation.
  3. Pour la suite, nous définissons dans l’architecture xml un formulaire (<form>) dans lequel nous définissons une feuille (sheet) et les différents champs que nous allons disposer dans les attributs group. À ce niveau, il est important de noter que l'attribut group joue le rôle de la div de classe row sur bootstrap.

Maintenant nous pouvons implémenter la vue tree qui fonctionne à peu près comme la vue form et on obtiendra ceci

<record id="oo_consultation_view_tree" model="ir.ui.view">
    <field name="name">oo.consultation.view.tree</field>
    <field name="model">oo.consultation</field>
    <field name="arch" type="xml">
        <tree>
            <field name="titre"/>
            <field name="auteur_id"/>
            <field name="genre_id"/>
            <field name="editeur_id"/>
            <field name="code_isbn"/>
        </tree>
    </field>
</record>

Nous définissons l'action qui sera liée au menu présenté ci-dessous

L'action

<record id="oo_consultation_action" model="ir.actions.act_window">
    <field name="name">Bibliothèque</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">oo.consultation</field>
    <field name="view_mode">tree,form</field>
    <field name="help" type="html">
        <p class="o_view_nocontent_smiling_face">Créer vos livres</p>
        <p>Enregistrer toutes les informations relatives aux livres que vous souhaitez repertoriés</p>
    </field>
</record>

Commentaire:

  1. <record id="oo_consultation_action">: on définit l'ID de l'action qui sera stocké dans la table ir.actions.act_window.
  2. Bibliothèque: le nom de l'action.
  3. oo.consultation: le modèle vers lequel pointe cette action.
  4. tree,form: les vues que cette action devra ouvrir.
  5. Et le reste sont des messages de présentation lorsque le modèle.

Enfin le menu

<menuitem id="oo_consultation_menu"
          name="Consultation"
          parent="oo_library_menu_root"
          action="oo_consultation_action"/>

Dans cette balise nous avons défini son ID, son nom (name), l'ID de son parent et l'ID de l'action qui sera exécutée.

Mais où se trouve le menu parent me direz-vous?

Allez dans le fichier oo_library/data/menu.xml écrire le code suivant qui représente le menu principal du module

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data>
        <menuitem id="oo_library_menu_root" name="Bibliothèque"/>
    </data>
</odoo>

Pour que tous vos changements soient pris en compte sur Odoo, allez dans le fichier __manifest__.py et ajoutez-y le chemin vers vos vues au niveau de la clé data comme suit:

'data': [
    'data/menu.xml',
    'views/oo_consultation_view.xml',
],

Maintenant vous pouvez redémarrer votre instance et mettre à jour le module pour voir les changements qui ont été apportés. Désormais vous pouvez enregistrer tous vos livres favoris!

En résumé:

  1. Notez qu'il existe plusieurs vues XML sur Odoo (tree, form, kanban, etc.) Nous aurons l'occasion de revenir sur chacune de ces vues.
  2. Chaque vue est définie dans un bout de code qui lui est spécifique.
  3. Lors de l'implémentation d'une vue, il est important d'adopter des standards précis pour faciliter le débogage!

Si vous avez des questions ou des suggestions, n'hésitez surtout pas à les mettre en commentaire.

Sur ce, A+!

Newsletter · une fois par mois

Un cas réel de production Odoo, chaque mois

Ce que j'ai fait sur une migration, une intégration ou une chaîne de production : le code, ce qui a cassé, et pourquoi. Rien d'autre.

Aucun spam. Désinscription en un clic.

L'auteur

À propos de l'auteur

Je suis Nasser, développeur Odoo depuis 2016. Je travaille sur les intégrations et les migrations Odoo, avec le stock et la production. Certifié Odoo, membre de l'OCA, basé en Allemagne.

Ici, pas de théorie : les articles et les vidéos sortent de missions réelles, avec le code, les erreurs et ce que je ferais autrement la prochaine fois.

Voir la chaîne YouTube →

Sur le même sujet

Continuer la lecture

Tous les articles sur ce sujet