Bienvenue au monde de Openerp!
aujourd'hui, nous allons expliquer quelques notions indispensables pour bien comprendre le fonctionnement d'openerp et le developpement de modules. J'utiliserais l'exemple precedement fourni [|/index.php?post/2010/01/07/Premier-Module] pour les explications.
Openerp, meme si son nom inclu "erp" n'est pas forcement utilisé pour developper des solutions erp. Si vous voulez stocker des données et les manipuler ensuite facilement, alors Openerp est une bonne solution.
Un module Openerp:
Un module Openerp est un simple dossier dans lequel sont stockés quelques fichiers qui permettent au module de se "greffer" à openerp:
* script python terp.py. ce dernier contient des informations indispensables pour initialiser les vues, declarer les dependances, etc. il ne contient qu'un dictionnaire sous cette forme:
{
"name" : "etudiants", # nom du module.
"version" : "0.1",#bla bla
"author" : "Tiny", #bla
"website" : "http://openerp.com", #bla bla
"category" : "Unknown", # blabla
"description": """ """, #bla bla
"depends" : ['base'], #tres important, certains modules peuvent dependre des autres, listez ici le nom des modules dont depens le votre.
"init_xml" : [ ], # nom du fichier xml contenant les infos d'initialisation. personnellement, je ne l'utilise jamais, mais...
"demo_xml" : [ ], # lors de l'installation d'un nouveau module, il est sympa d'avoir des données pour jouer avec.
"update_xml" : ['etudiants_view.xml'], #hyper important, y sont definies les informations de mise à jour, indispensable lors du developpement.
"installable": True # mettez à true pour l'instant...
}
* script python init.py. ce dernier permet au dossier d'etre consideré comme un module python. il pointe sur votre module principal grace à la directive "import".
* script python dans lequel vous allez definir vos classes python, classes qui representent des modeles de données. Si vous regardez le code du module "etudiants", vous verrez ceci:
class etudiant(osv.osv): #nom de la classe, derivant de osv.osv
"""classe pour instancier des "etudiants".""" #docstring de la classe.
_name = 'etudiant' #nom du modele. il peut etre different du nom de la classe. il est tres important, car c'est à travers lui que vous pourrez pointer sur le modele et en manipuler les données.
_columns = {#columns stocke les differentes propriétés du modele.
'nom': fields.char("Nom de l'etudiant",size=100, help='nom de l etudiant'),
'prenom': fields.char("Prenom", size=100, help='prenom'),
'adresse': fields.text("Adresse", help='adresse'),
'email': fields.char("Email",size=100, help='email'),
'photo': fields.binary("Photo de l'etudiant"),
}
etudiant() #instanciation de la classe
* enfin, un fichier xml qui contient vos vues. Explications: Openerp est bati sur le modele MVC, une stricte separation entre données (representées par les modeles) et les vues qui sont une façon particuliere de presenter ces informations. Exemple: le modele "etudiants" peut etre affiché sous forme de formulaire pour mises à jour, sous forme d'arbre de données, et pourquoi pas badge, graphiques et j'en passe. Avantage: stricte separation. inconvenients: la vue et le modele vont de pair, si le modele est mis à jour, il y a de grandes chances que vous deviez retoucher les vues, mais c'est un peu normal. Si vous regardez le fichier etudiants_view.xml, vous verrez 2 vues pour le modele "etudiant": l'un en formulaire (pour l'edition/visualisation), l'autre sous forme d'arbre pour la presentation en ligne. Pour maitriser les vues, il est indispensable d'avoir de bonnes notions en syntaxe xml, et respecter certaines conventions.