Accéder au contenu principal

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éfinie 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>

  </data>
</odoo>

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





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


Vue formulaire avant enregistrement

Vue formulaire après enregistrement


        <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 string="">
                    <sheet>
                        <group>
                            <field name="titre"/>
                            <field name="auteur_id"/>
                            <field name="genre_id"/>
                            <field name="code_isbn"/>
                        </group>
                        <group>
                            <field name="editeur_id"/>
                            <field name="collection_id"/>
                            <field name="resume"/>
                        </group>
                    </sheet>
                </form>
            </field>
        </record>

Petit commentaire:


  1. <record id="oo_consultation_view_form" model="ir.ui.view">: ici nous définissons l'ID de la vue qui sera stockée dans la table ir.ui.view
  2. <field name="name">oo.consultation.view.form</field>: on défini 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. A 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êt comme la vue form et on obtiendra ceci


Vue tree avant enregistrement

Vue tree après enregistrement


        <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 string="">
                    <field name="titre"/>
                    <field name="auteur_id"/>
                    <field name="editeur_id"/>
                    <field name="genre_id"/>
                </tree>
            </field>
        </record>

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


Menu Bibliothèque dont module MaLibrairie


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="oe_view_nocontent_create">
                Créer vos livres
              </p><p>
                Enregistrer toutes les informations relatives aux livres que vous souhaiter
                repertoriés
              </p>
            </field>
        </record>

Commentaire:


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


Enfin le menu


        <menuitem
                id="menu_oo_consultation"
                name="Bibliothèque"
                parent="oo_library_menu_root"
                action="oo_consultation_action"/>

Dans cette balise nous avons définie 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 name="MaLibrairie" id="oo_library_menu_root"/>

  </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éfini 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+!

Commentaires

  1. merci MR nasser ce cours est tres instructif

    RépondreSupprimer
    Réponses
    1. C'est moi qui te remercie et j'ose croire que tu sera l'un de mes lecteurs les plus fidèles

      Supprimer

Publier un commentaire

Posts les plus consultés de ce blog

Apprendre python: par où commencer?

Je reçois beaucoup de messages de la part de jeunes gens qui veulent débuter en programmation. Ils sont tous intéressés par le langage Python et voudraient savoir par où commencer . Si t'es l'un d'eux, je te dis dans cet article par où commencer, le minimum qu'il faut savoir et ce qui t'attends, le tout basé sur ma modeste expérience. Alors, qu'est ce qu'il faut savoir concrètement avant de commencer? Je ne vais pas te dire que Python a été créé par Guido en 1991, bla bla bla bla. Ces infos, tout le monde en parle et tu peux les retrouver toutes sur cette page Wikipedia . T'as certainement entendu quelqu'un te dire que Python est un langage hyper facile, mais je te dis que c'est faux! Certes il est très facile à prendre en main et formidable pour apprendre les bases de la programmation. Mais lorsqu'il s'agit d'implémenter de vrais projets, il faut tout un tas de connaissances précises par exemple sur les  collections , itertools , thr

Présentation d'un module Odoo de gestion de bibliothèque: comment développer un tel module?

Hello! Aujourd'hui nous allons continuer notre apprentissage d'Odoo en passant par la phase pratique. Nous allons ensemble développer un module de gestion de bibliothèque et donc le code source sera disponible sur un serveur Git. Le module que nous mettrons en place fera intervenir les modules de gestion de stocks, achats et ventes . Nous implémenterons entre autres des modèles et vues personnalisés, des rapports et des workflows . Bref, ce module vous donnera toutes les techniques et méthodes dont vous aurez besoin pour devenir un développeur Odoo chevronné.

Comment créer, sauvegarder, supprimer et restaurer une base de donnée Odoo

Hello! Aujourd'hui je vais vous montrer comment manipuler votre base de données Odoo. Il s'agira principalement de la création, sauvegarde, suppression et restauration à travers l'interface d'Odoo . Je ne manquerai également pas de vous briefer un tout petit peu sur PostgreSQL.