Création d'un Module Démo pour OpenERP

Après l'installation d'OpenERP, vous pouvez vérifier le processus d'exécution avec la commande :

ps -aux|grep openerp

Cette commande vous fournira des informations sur l'installation d'OpenERP, y compris le chemin d'exécution come :

/usr/bin/python /usr/bin/openerp-server --config=/etc/openerp/openerp-server.conf --logfile=/var/log/openerp/openerp-server.log

Ce résultat indique le répertoire Python, l'emplacement d'OpenERP, ainsi que les chemins vers le fichier de configuration et le fichier journal.

En ouvrant le fichier de configuraton (openerp-server.conf), vous pouvez observer les paramètres de configuration :

  1 [options]
  2 ; Mot de passe permettant les opérations sur la base de données :
  3 ; admin_passwd = admin
  4 db_host = False
  5 db_port = False
  6 db_user = openerp
  7 db_password = False

Pour une installation via apt, les modules d'OpenERP se trouvent dans : /usr/lib/pymodules/python2.7/openerp/addons

Voici un module démo que j'ai développé et testé avec succès :

L'objectif est de créer un module gérant les inscriptions des étudiants aux cours. Voici les étapes détaillées pour créer ce module :

Étape 1 : Naviguez dans le répertoire des modules mentionné précédemment et créez un nouveau dosier nommé "demo_formation".

Étape 2 : Dans le dossier "demo_formation", créez quatre fichiers : init.py, openerp.py, formation.py et formation_vue.xml

Explication rapide des fichiers :

  • init.py : fichier requis pour tout module Python, effectuant des initialisations de base
  • openerp.py : fichier spécifique à OpenERP contenant les métadonnées du module
  • formation.py : contient les classes et logiques métier de notre module
  • formation_vue.xml : définit l'interface utilisateur du module dans OpenERP

Étape 3 : Contenu du fichier init.py

1 # -*- coding: utf-8 -*-
2  import formation # Importation des fichiers Python du module

La première ligne spécifie l'encodage UTF-8 du fichier, essentiel pour les caractères spéciaux.

Étape 4 : Contenu du fichier openerp.py

 1 # -*- coding: utf-8 -*-
 2  {
 3     "name" : "demo_formation", # Nom du module
 4     "version" : "1.0",        # Version du module
 5     "description" : 'Module de démonstration pour la gestion des formations', # Description
 6     "author" : "Développeur OpenERP",    # Auteur
 7     "website" : "http://www.openerp-demo.com", # Site web
 8     "depends" : [],                      # Modules requis
 9     "update_xml" : ["formation_vue.xml"],  # Fichiers XML à charger lors de la mise à jour
10     "installable" : True,                # Module installable                  
11     "category":'Modules Génériques/Éducation'  # Catégorie du module
12  }

Ceci est un dictionnaire Python contenant les métadonnées essentielles du module.

Étape 5 : Contenu du fichier formation.py

 1 # -*- coding: utf-8 -*-
 2  from openerp.osv import fields, osv
 3  
 4  class formation_cours(osv.osv):
 5      _name = 'demo_formation.cours'
 6      _description = 'Module de démonstration pour les formations'
 7      _columns = {
 8         'nom':fields.char( u'Nom du cours',size=64,select=True),
 9         'date_debut':fields.date(u'Date de début',select=True),
10         'duree_total':fields.float(u'Durée totale (jours)',digits=(16,1)),
11         'formateur':fields.many2one('res.users',u'Formateur'),
12         'participants':fields.many2many('res.partner',string=u'Participants'),
13         'tarif':fields.float(u'Tarif (€)',digits=(16,2)),
14          }
15  formation_cours()

Étape 6 : Contenu du fichier formation_vue.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
    <!-- Définition de la vue formulaire -->
        <record model="ir.ui.view" id="demo_formation_cours_form_view">
            <field name="name">Vue formulaire des cours</field>
            <field name="type">form</field>
            <field name="model">demo_formation.cours</field>
            <field name="arch" type="xml">
                <form string="Formulaire de cours">
                    <field name="nom"/>
                    <field name="date_debut"/>
                    <field name="duree_total"/>
                    <field name="tarif"/>
                    <field name="formateur"/>
                    <field name="participants" colspan="4"/>
                </form>
            </field>
        </record>
        <!-- Définition de la vue liste -->
        <record model="ir.ui.view" id="demo_formation_cours_tree_view">
            <field name="name">Vue liste des cours</field>
            <field name="type">tree</field>
            <field name="model">demo_formation.cours</field>
            <field name="arch" type="xml">
                <tree string="Liste des cours">
                    <field name="nom"/>
                    <field name="date_debut"/>
                    <field name="formateur"/>
                    <field name="tarif" sum="Total"/>
                </tree>
            </field>
        </record>
<!-- Définition de l'action de la vue -->
    <record model="ir.actions.act_window"  id="action_demo_formation_cours">
        <field name="name">Cours</field>
        <field name="res_model">demo_formation.cours</field>
        <field name="view_type">form</field>
        <field name="view_mode">form,tree</field>
        <field name="view_id" ref="demo_formation_cours_tree_view"/>
    </record>
<!-- Définition du menu -->
    <menuitem id="menu_demo" name="Démonstration"/>
    <menuitem id="menu_demo_formation" name="Formations" parent="menu_demo"/>
    <menuitem id="menu_demo_formation_cours" name="Gestion des cours" parent="menu_demo_formation" action="action_demo_formation_cours"/>   
</data>
</openerp>

Après avoir créé ces fichiers, mettez à jour les modules et vous verrez votre nouveau module dans la liste des modules non installés.

Bien que le copier-coller puisse donner rapidement des résultats, la création réelle révèle plusieurs problèmes potentiels. Si vous rencontrez les erreurs suivantes, voici quelques solutions :

  1. "SyntaxError: Non-ASCII character" : le fichier ne contient pas la déclaration "# -- coding: utf-8 --" ou il y a une faute de frappe.
  2. "You try to install module '' that depends on module 'lesson'. But the latter module is not available in your system" : bien que certains attribuent cela à des problèmes d'importation, dans mon expérience, cette erreur disparaît une fois les autres problèmes corrigés. N'oubliez pas que les modifications de vue nécessitent une mise à jour du module pour être appliquées.
  3. "AttributeError: 'NoneType' object has no attribute 'fields_view_get'" : consultez http://help.openerp.com/question/35163/attributeerror-nonetype-object-has-no-attribute-fields_view_get/
  4. "Error occurred while validating the field(s) arch:Invalid XML for View Architecture!" : cette erreur est généralement due à une faute de frappe dans le fichier XML. Consultez le fichier journal pour identifier la ligne exacte de l'erreur. Assurez-vous également que le nom de la classe du module est correct, en utilisant le format "nom_dossier.nom_module".

Étiquettes: OpenERP modules developpement Python XML

Publié le 1 juin à 20h05