Bien Comprendre l'architecture technique d'Odoo

Introduction

 Odoo est une solution open source qui permet de piloter une entreprise. Il comporte l’ensemble des applications nécessaires pour centraliser la gestion de l’Enterprise dans une seule base de données  commune à tous les services de l’entreprise et gère l’ensemble de ses processus.  

L’architecture du Système odoo : 

L'architecture du système Odoo est composée de 3 tiers :

Un serveur de base de données PostgreSql. Odoo utilise une couche ORM « Object Relational Mapping » pour la persistance de ses objets métier et la gestion des la base de données.
• Un serveur d'application (contenant les objets de gestion, le moteur de workflow, le générateur d'édition, etc.).
* Un serveur de présentation qui permet à l'utilisateur de se connecter à Odoo avec n'importe quel navigateur internet( Google crome, firefox,...)

Le Modèle de Conception MVC 

Le Framework technique d’odoo est basé sur le modèle de conception  MVC (Modèle  Vue Contrôler) qui consiste à décomposer l’architecture  du programme en trois partie complémentaires et dépendantes :

-          Modèle : qui contient toutes les objets odoo déclarés, les tables de données : La partie base de données est géré par le SGBD PostgreSQL
-          Vue : c’est les différentes vues et interfaces utilisés par l’utilisateur (Vue Formulaire, kanban view, Calendar, ….) , cette partie est gérée principalement par XML
-          Contrôleur : C’est la partie contrôle qui consiste aux codes python exécutés pour assurer le contrôle , la synchronisation et la gestion des événements.

Architecture des Dossiers et modules Odoo 

Le principe de base d’odoo est ’utiliser une structure modulaire, et indépendante qui permet à la fois d’améliorer régulièrement les modules existants, et d’Autre part, avoir une souplesse de modification ou de suppression des modules qu’on ne veut pas utiliser, sans avoir à toucher tout le système.

Par défaut, il contient plusieurs modules prêt à être déployés tel quels , ou à les personnaliser selon vos besoins. Les modules sont contenu dans un répertoire nommé    / addons , et il est possible d’y installer  vos propres modules mais il est préférable d’utiliser un dossier personnalisé (un dossier addons séparé) .

Structure d'un Module odoo :

Un Module sous odoo est représenté comme un répertoire, contenant des sous-répertoires et des fichiers avec une convention bien définie.
Pour pouvoir créer et développer ses propres modules odoo, il va falloir comprendre la signification des fichiers et répertoire d’un module odoo, composant l'architecture technique d’un module :
1. __init__.py : (Required : nécessaire pour la création d’un module)
C’est le fichier python d'initialisation du module contenant tous les autres fichiers python à importer .
2. __manifest__.py :– (Required : nécessaire pour la création d’un module)
C’est le fichier de manifestation du module , il contient tous les informations concernant le module comme le nom, une description, la version, l’auteur, le site web, les fichiers de données, démos, sécurité ,....
3. models :–(Required : nécessaire pour la création d’un module)
C’est un répertoire qui va contenir tous les fichiers pythons de votre modules, ce répertoire doit être déclaré dans le fichier d’initialisation __init__.py
4. views :–
C’est le répertoire qui va contenir les fichiers xml décrivant la couche présentation ou interface, tel que les vues tree(liste), formulaires (form), graph, pivot, kanban , action, menu, rechercher (search),....
5. data:-C’est un répertoire qui va contenir les données prédéfinies nécessaire lors de l'installation du module .
6. demo:–Ce répertoire va contenir les donnée de démonstrations, qui vont être chargé lors de l’installation du module.
7. static :–Ce répertoire va contenir tous les fichiers relié au site web, tel que les fichiers img, js (javascript), css, font ,...

(1) src

css:– contient tous les fichiers css de conception

img:– contient tous les fichiers images

js:– contient tous les fichiers javascript

xml:– contient tous les fichiers .xml utilisé pour les view/qweb templates

(2). description:–Contient un fichier html nommé “Index.html” qui permet une démonstration et présentation sur votre module , contenant des aperçus et des imprimés écrans des fonctionnalités de votre module .Il contient aussi le fichier icon.png qui sera utilisé comme l’icône de votre module .

8. wizard :– C’est un répertoire qui va contenir les classes de transitions nécessaire à l’affichage des assistants et des fenêtres qui servent à aider l'utilisateur à introduire les données nécessaires pour l’obtention des résultats souhaités (états de sorties, calcul, …)Ces modèles seront automatiquements supprimés après utilisation.

9. Report :- C’est le répertoire qui va contenir les descriptions qweb et xml, des rapports de sortie (en pdf) de votre module
10. security :- Répertoire contenant les fichiers de base définissant les règle de sécurités, les droits d'accès, les groupes, etc. 

le fichier csv des droits d’accès (ir.model.access.csv) : pour assigner les droits de lecture et d’écriture , à un utilisateur d’un groupe .

security.xml : qui va contenir la création des groupes et les autres règles d’accès aux enregistrements .


11. controller :– Ce répertoire va contenir les fichiers nécessaires des requêtes http et leurs réponses à partir d’un navigateur internet , il concerne la partie développement web qui permet d’étendre ou personnaliser le module de base website proposé par odoo
12. i18n :- Il comprend la traduction de votre module dans les différents langues .

principalement , il contient le fichier template de traduction (.pot) et le fichier .po qui contient la traduction actuelle du module
13. Doc :-  C’est un répertoire qui va contenir la partie documentation concernant votre module les fonctionnalités, les explications et démos,..)
14. Test :- C’est un répertoire qui va contenir les fichiers .py (python) de test.

Écosystème technique odoo :
La communauté odoo, est l'une des facteurs importante de progression et du développements d'odoo.
Composée de développeurs, utilisateurs et partenaires, a fait exploser l’utilisation d'odoo dans le monde entier, en quelques années seulement.
Il est nécessaire donc de savoir comment utiliser la communauté pour se compléter en terme de compétences et se former régulièrement.

Liens utiles :
https://runbot.odoo.com/runbot : plateforme d’intégration continue contenant, qui vous permettra d'accéder à la démonstration n'importe quel version d'odoo (même la version entreprise odoo ). pour se faire il suffit de sélection la version et de taper admin/admin pou accéder à la base souhaité
https://apps.odoo.com/apps : plateforme appelé third party , contient des milliers de modules prêts à l'emploi ! , payant et gratuits . ces modules s'ajoutent à ceux présentés en standard par odoo , et s'intègrent parfaitement comme des modules en extensions. Avant de développer n'importe quel module penser à jeter un coud d’œil sur cette place, surement vous trouvez la réponse à une grande partie de votre question .
https://www.odoo.com/fr_FR/slides   page d’accueil pour la plateforme e-e-learning odoo
https://www.odoo.com/documentation/13.0/     page officiel de documentation technique odoo
https://www.odoo.com/documentation/user/13.0/          page officiel de documentation fonctionnel odoo
https://github.com/odoo  page odoo dans github

Télécharger gratuitement votre  guide odoo ! 

Télécharger Gratuitement votre guide Odoo

Découvrez comment , Odoo  est une vraie opportunité pour les entreprises et les développeurs !


Télécharger !