L'ORM d'OpenERP Mercredi 15 décembre 2010.

Slides:



Advertisements
Présentations similaires
Design Pattern MVC En PHP5.
Advertisements

Javascript les spécificités du langage - Partie 2-
 C'est une fenêtre par laquelle les informations d'une table peuvent être visualisées et changées.  C'est une table virtuelle: ◦ elle n'existe pas ◦
Initiation aux bases de données et à la programmation événementielle Outil de création des tables Support de TD rédigé par Bernard COFFIN Université Paris.
FAIRE SA BIBLIOGRAPHIE DE THESE AVEC ZOTERO Traitements de texte pris en compte: Word et LibreOffice.
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
1 ::: GUIDELINE BACK OFFICE SITE UNIVERS INFIRMIER À l’attention de Audrey Vesque et Delio Prudente MARDI 25 JUIN 2013.
Les ORMs ● Faire coexister le monde relationnel et objet.
OpenERP The inCloud Business Solution 3/3/ / Camptocamp Chambéry Vienne Lausanne ■ Éditeur et intégrateur de solutions Open Source.
Les profils du SEDA confection de profil avec Agape.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
SQL partie 5 1 LMD create – update – primary key secondary key.
Le langage de définition de données B.T.S. S.I.O – SI3 –
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
Les instructions pour la création de cette présentation sont incluses dans la page de commentaires de chaque diapositive. Dans le menu Affichage, cliquez.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Les Bases de données Définition Architecture d’un SGBD
Cours Initiation aux Bases De Données
Initiation à la conception des systèmes d'informations
Communication client-serveur
Module de gestion des tournées de livraison
Systèmes d’Information
Construire des requêtes
Environnement du développement de BD ORACLE REPORTS 10g
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Initiation aux bases de données et à la programmation événementielle
Table passage en caisse
CADAL Layout de la page langue Accueil> Qu'est ce que Cadal ? Légal
De l’étude du système d’information à la mise en œuvre sous Access
Généralité sur les bases de données
Les bases de données et le modèle relationnel
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Réalisation d'agents de surveillance Zephir
POL1803: Analyse des techniques quantitatives
Technologies d’intelligence d’affaires
1 Présentation projet Base de Données & Langage SQL Bakary DIABY, Insa Rouen Promo. MS-ESD 16/17.
Windows 7 NTFS.
Les interfaces en PHP.
Introduction BD TABLES ET DONNÉES champs OU données, types de données
Manipulation D’Une Base De Données
Programmation en C++ C++ de base
Structure D’une Base De Données Relationnelle
REVUE DE LITTERATURE. Introduction Première partie majeure dans la rédaction du mémoire, la réalisation d’une revue de littérature consiste à effectuer.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Guide Utilisateur. Guide Utilisateur.
Présentation python : Épisode 3
Type Concret – Type Abstrait
Calcul Scientifique Initiation à SCILB
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
CRM SALESFORCE – EVOLUTION DU MODULE DEVIS
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
Introduction aux Bases de Données SGBDR Microsoft Access.
Base de données Table des clients Table des fournisseurs Table des commandes clients Formulaire des clients Formulaire des fournisseurs Formulaire des.
Formation SpeechExec Enterprise Dictate
Principes de programmation (suite)
Introduction à Python.
STREAMS (et fichiers).
Support de formation Administrateur Notes de Frais
FORMATION DRAGON N2 Vincent DELAMARRE– Responsable Support
1. 2 TABLEUR: Calc mars 19 Myriam Boullanger - Bureautique - Calc Suite Gratuite Libre Office Dans le navigateur (Internet Explorer, Google Chrome, FireFox,…),
Formation Dragon NaturallySpeaking
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
YII Yes It Is !.
ScienceDirect Guide d’utilisation de la base de données : ScienceDirect Pr R. EL OUAHBI.
Implémentation de FTP Rappel sur FTP Relation entre un site Web et FTP
Les données structurées et leur traitement
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
Transcription de la présentation:

L'ORM d'OpenERP Mercredi 15 décembre 2010

Préambule Je ne suis pas spécialiste des ORMs Je ne suis qu'un utilisateur de l'ORM d'OpenERP

Introduction Logiciel généraliste pour l'ensemble de l'activité des entreprises Devis Commandes Production Facturation Compta OpenERP = OpenObject + modules prédéfinis

OpenObject Plate-forme de dev client/serveur La gestion du stockage est faite par l'ORM

Principe d'un ORM Classe - champs - méthodes TABLE BDD

Les subtilités de l'ORM d'OERP Ce ne sont pas les champs python standards qui sont pris en compte ! Les champs de la bdd sont définis dans un dictionnaire, qui est une variable de classe

class ma_classe (osv.osv) _name = 'ma_classe' _columns = { 'nom' : fields.char('Nom'), 'date_depart' : fields.date('Date de depart'), }

cela permet de bien séparer les champs de la bdd avec les champs python il existe les types standards (booléen, char, date, entier, numérique, sélection) il existe aussi des types relationnels : many2one one2many many2many ils sont très puissants !

exemple : partenaire/adresses class res_partner(osv.osv): _name = "res.partner" _columns = { 'name': fields.char('Name', size=128, required=True), 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), 'category_id': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Categories'), } class res_partner_address(osv.osv): _name = 'res.partner.address' 'partner_id': fields.many2one('res.partner', 'Partner'), 'name': fields.char('Contact Name', size=64), 'street': fields.char('Street', size=128), 'street2': fields.char('Street2', size=128), 'zip': fields.char('Zip', size=24), 'city': fields.char('City', size=128),

Les APIs La grande subtilité est la différence entre l'objet et l'enregistrement ! # #on demande une instance qui gère la table 'ma.class' maclass_obj = pool.get('ma.class') # on effectue une recherche sur cette table # 'cr' est un curseur de la bdd # 'uid' est le user id ids = maclass_obj.search(cr, uid, [('nom', '=', 'test')] ) for id in ids: # on boucle sur les enregistrements maclass_rec = maclass_obj.browse(cr, uid, id) # on a un objet python qui represente un enregistrement # on peut acceder aux champs : print maclass_rec.nom print maclass_rec.date # et pour les champs relationnels : maclass_rec.autre_table.autre_champ

autre exemple #on demande une instance qui gère la table 'ma.class' maclass_obj = pool.get('ma.class') # on effectue une recherche sur cette table ids = maclass_obj.search(cr, uid, [('nom', '=', 'test')] ) res = maclass_obj.read(cr, uid, ['nom', 'date']) # res est une liste de dictionnaires : on retrouve une structure classique # de table (lignes, colonnes) for d in res: # on boucle sur les resultats print d['nom'] print d['date']

browse() objet, très puissant pour les champs relationnels peut être lourd en mémoire (!) read() structure classique, optimisation des données chargées

Méthodes de l'ORM browse() create(), unlink() read(), write() search() copy() export_data(), import_data() http://doc.openerp.com/developer/2_5_Objects_Fields_Methods/methods.html

pour aller plus loin... l'ORM gère aussi la notion d'héritage... on peut augmenter les fonctionnalités d'un objet existant (héritage de classe) ajout de champs dans bdd ajout de méthodes on peut créer des nouvelles classes par prototypage... http://doc.openerp.com/developer/2_5_Objects_Fields_Methods/object_inherit.html

Documentation http://doc.openerp.com/developer/

Merci !