Sunday, November 29, 2009

Création d'un module (Partie 1)

Les modules sur OpenERP se trouvent dans le dossier server/bin/addons/ , un dossier par module :
✔ base
✔ account
✔ product
✔ crm
✔ stock
✔ sale
✔ purchase
✔ marketing
✔ project
✔ ...

Les étapes suivantes sont indispensables pour créer un nouveau module:
● créer un sous répertoire dans server/bin/addons
● créer un fichier de description du module : __terp__.py
● créer un fichier Python contenant les objets
● créer les fichiers .xml qui chargent les données (vues, menu , données de demo , ...)
● optionnellement créer les reports, wizards ou workflows.

Le contenu du dossier d'un module (addons/module_name) :
✔ __terp__.py.

* Objets:
✔ modulename.py, autres possibilités :
✔ __init__.py.

* Les fichiers XML :
✔ modulename_view.xml.
✔ modulename_workflow.xml (optional).
✔ modulename_report.xml (optional).
✔ modulename_wizard.xml (optional).
✔ modulename_data.xml (optional).
✔ modulename_demo.xml (optional).

* report/sous dossier :
✔ report_name.xml.
✔ report_name.xsl.
ou
✔ report_name.rml.
✔ report_name.sxw.
✔ report_name.py (optional).

* wizard/sous dossier
✔ __init__.py
✔ wizard_name.py

* Étape 1 - création du fichier de description du module : __terp__.py :

Dans le dossier du module créé, vous devez ajouter un fichier __terp__.py .
Ce fichier , qui doit être écrit sous Python , est responsable de :
● déterminer les fichiers XML qui doivent être analysés durant l'initialisation du serveur.
● déterminer les dépendances du module créé.
✔ Le fichier doit contenir un dictionnaire Python avec les valeurs suivantes:

✔ name : Le nom du module.
✔ version : La version du module.
✔ depends : Liste des modules dont dépend le module. Le module base est presque toujours dans les dépendances car des données indisponsables pour les vues, reports, ... sont dans le module base .
✔ init_xml : Liste de fichiers .xml à charger quand le serveur est
lancé avec l'argument "init=
module".
✔ update_xml : Liste de fichiers .xml à charger quand le serveur est
lancé avec l'argument "update= module" .
✔ active : True or False. Détermine si le module est actif ou non en utilisant le client.
✔ Installable : True or False. Détermine si le module est installable ou non. Si le module n'est pas
installable, il n'est pas possible de l'activer en utilisant le client.

Prenons cet exemple :

{
"name" : "Mon Module",
"version" : "1.0",
"depends" : ['base'],
"init_xml": [],
"update_xml": ["mon_module_view.xml",
mon_module_report.xml"],
"active": True
"installable": True,
}

✔ init_xml & update_xml sont équivalent.
* additional keys:
✔ "author" : "iGENIUS",
✔ "website" : "igenius.com",
✔ "category" : "Generic Modules/Mon module",
✔ "translations" :
{
"fr": "i18n/french_fr.csv"
},

* Le fichier __init__.py est comme tout module Python , exécute au démarrage du programme. Il a besoin d'importer les fichiers Python pour être chargés.
Ainsi, si vous crééez le fichier "module.py", contenant la description de vos objets, vous devez écrire une ligne dans __init__.py: import module .

No comments:

Post a Comment