odoo découverte technique - perso.liris.cnrs.fr · présentation et construction des éléments de...
TRANSCRIPT
ODOO – Découverte Technique
Découverte Technico – Fonctionnelle d’Odoo
Sommaire du cours
Découverte du framework et de l'ORM : Champs, modèles, relations entre
objets
Méthodes associées, héritage des modèles
Présentation et construction des éléments de l'interface : Les différentes vues
Les actions et menus
Les assistants (wizards)
Approche rapide sur les droits des objets
Création d'un module
ERP : Enterprise Ressource Plannning
PGI : Programme de Gestion Intégrée
Workflow : Flux de travail
Découverte du framework et de l'ORM :
Champs, modèles, relations entre objets
Méthodes associées, héritage des modèles
.
Présentation et construction des éléments de l'interface :
Les différentes vues Vu lors du cours et TP Prise en main Odoo
Les actions et menus Les actions définissent le comportement du système en réponse aux actions de
l'utilisateur: login, bouton d'action, sélection d'une facture, ...
Les actions peuvent être stockées dans la base de données ou renvoyées
directement en tant que dictionnaires, par ex. méthodes de bouton. Toutes les
actions partagent deux attributs obligatoires:
type
la catégorie de l'action en cours, détermine quels champs peuvent être utilisés et
comment l'action est interprétée
nom
une courte description lisible par l'utilisateur de l'action, peut être affichée dans
l'interface du client
Présentation et construction des éléments de l'interface (suite) :
Les actions et menus (suite) 5 types d’actions :
Windows actions (ir.actions.act_windows)Type d'action le plus courant, utilisé pour présenter les visualisations d'un modèle à travers des vues: une action de fenêtre définit un ensemble de types de vue (et éventuellement de vues spécifiques) pour un modèle (et éventuellement un enregistrement spécifique du modèle).
Url actions (ir.actions.act_url)Autoriser l'ouverture d'une URL (site web / page web) via une action Odoo. Peut être personnalisé via deux champs : url et target
Server actions (ir.actions.server)Autoriser le déclenchement du code de serveur complexe à partir de n'importe quel emplacement d'action valide.
Report actions (ir.actions.report.xml)Déclenche l'impression d'un rapport
Client actions (ir.actions.client)Déclenche une action implémentée dans le client Odoo
.
Présentation et construction des éléments de l'interface (suite) :
Les assistants (wizards) Les assistants décrivent des sessions interactives avec l'utilisateur (ou des boîtes de
dialogue) via des formulaires dynamiques. Un assistant est simplement un modèle qui
étend la classe TransientModel au lieu de Model. La classe TransientModel étend Modèle
et réutilise tous ses mécanismes existants, avec les particularités suivantes:
Les enregistrements d'assistant ne sont pas destinés à être persistants. ils sont automatiquement
supprimés de la base de données après un certain temps. C'est pourquoi ils sont appelés
transitoires.
Les modèles d'assistant ne nécessitent pas de droits d'accès explicites: les utilisateurs disposent
de toutes les autorisations sur les enregistrements de l'assistant.
Les enregistrements d'assistant peuvent faire référence à des enregistrements réguliers ou à des
enregistrements d'assistant via des champs many2one, mais les enregistrements réguliers ne
peuvent pas faire référence aux enregistrements d'assistant via un champ many2one
.
• La gestion des droits d'accès applicatifs aux modules Odoo repose sur : • les groupes
• les ACL (Access Control List)
• Un "groupe" (objet "res.groups") caractérise une typologie d'utilisation d'un ou plusieurs modules (ex: utilisateur simple de vente, responsable des ventes).
• Un utilisateur est affecté à un ou plusieurs groupes lors de sa création ou de sa modification.
• Une ACL définit les droits d'accès d'un groupe sur (en général) un objet Odoo.
• Groupe Un groupe est déclaré dans un fichier xml "<nom module>_security.xml" présent sous le répertoire "security" du module.
.
• Une ACL définit les droits d'accès au format "CRUD" (lecture, création, modification, suppression) d'un groupe sur un objet Odoo.
• Si l'information "groupe" n'est pas renseignée dans l'ACL, c'est que l'objet est accessible à tous (sauf droits restrictifs sur menus et actions).
• Une ACL peut adresser aussi une vue PostgreSQL (cas des rapports).
• Les ACL d'un module sont déclarées dans un fichier nommé "ir.model.access.csv" présent dans le répertoire "security" du module.
Ci-dessous un exemple d'ACL (exemple de l'appli YD vue précédemment) :
.
Composition d'un module
Un module Odoo peut contenir un certain nombre d'éléments:
Objets métierdéclarées en tant que classes Python, ces ressources sont
automatiquement conservées par Odoo en fonction de leur configuration
Fichiers de donnéesFichiers XML ou CSV déclarant des métadonnées (vues ou flux de
travail), des données de configuration (paramétrage de modules), des données de démonstration et plus
Contrôleurs WebGérer les demandes des navigateurs Web
Données Web statiquesImages, CSS ou fichiers javascript utilisés par l'interface web ou le
site web.
Structure d’un module
Chaque module est un dossier inclus dans un des
répertoires des modules complémentaires. Les
répertoires de modules complémentaires sont spécifiés
en utilisant l'option --addons-path.
Généralement les dossiers suivants sont utilisés :
dev-addons : contient les développements spécifiques
extra-addons : contient les modules de la communauté
Structure d’un module (suite) Il est préférable (et + propre) de créer des sous dossiers pour chaque type de fichier
Un module Odoo est déclaré grâce à son fichier « manifest » : __manifest__.py
Le fichier « manifest » contient des informations relatives à votre module telles que :
son nom,
sa version
ses dépendances
son auteur
ses données: fichier XML, csv, CSS, JS…
Exemple de __manifest__.py
Structure d’un module (suite)
Un module contient un fichier principal __init__.py qui se
charge d'importer les différents fichiers python du module. Il
permet ainsi de déclarer les .py ou les sous dossiers qui eux-
mêmes contiennent un fichier __init__.py déclarant l’import
des fichiers python.
from . import controllers
from . import models
Odoo fournit une commande qui génère la structure de base
d'un module (scaffolding):
Odoo.py scaffold "nom du module" "chemin où est stocké le module"
Cette commande vous crée un répertoire avec la structure
suivante :
Un fichier non obligatoire mais important doit être créé : le
readme.rst qui décrit les fonctionnalités du module.
Fichiers pythons
Ils permettent de déclarer de nouveaux modèles ou d’enrichir des modèles existants. Ils décrivent des objets métier, tels qu'une opportunité, une commande client ou un partenaire (client, fournisseur, etc.). Un modèle a une liste d'attributs et peut également définir des fonctions spécifiques.
Les modèles sont implémentés à l'aide d'une classe Python dérivée d'une classe de modèle Odoo. Ils traduisent directement vers des objets de base de données, et Odoo s'en charge automatiquement lors de l'installation ou de la mise à niveau du module. Le mécanisme responsable est le modèle relationnel objet (ORM).
Il est recommandé de créer un fichier python par modèle pour une lecture et une maintenance plus rapide
Fichiers pythons
Un mot clé à retenir : _inherit qui permet d’hériter d’un
modèle et de redéfinir ses attributs ou fonctions
Fichiers VuesLa couche Vue décrit l'interface utilisateur. Les vues sont définies à l'aide de XML, qui est utilisé
par l'infrastructure client Web pour générer des vues HTML sensibles aux données.
Les vues sont activées et affichées par les actions la majorité au travers de menus qui appellent
ces actions. Par exemple, l'élément de menu Utilisateurs traite une action également appelée
Utilisateurs, qui à son tour rend une série de vues. Plusieurs types de vue sont disponibles, tels
que les vues liste et formulaire, et les options de filtrage disponibles sont également définies par
type de vue particulier, la vue de recherche.
Les directives de développement d'Odoo indiquent que les fichiers XML définissant l'interface
utilisateur doivent être placés dans un sous-répertoire views
Créer votre module sous dev-addons
Fichier product_family.py
Fichier product_sub_family.py
Fichier product.py
Fichier product.py
Vue product_family_view.xml
Vue product_family_view.xml (suite)
Vue product_sub_family_view.xml
Vue product_sub_family_view.xml (suite)
Vue product_view.xml
Vue product_view.xml (suite)
Une fois votre module créé
Créer votre module sous dev-addons
Relancer le service Odoo
Aller dans Odoo puis activer le mode développeur
Aller dans le menu applications puis mettez à jour la liste des
applications
Rechercher désormais votre module dans la liste des
applications
Installer votre module
Résultat attendu
Résultat attendu – Menu et vue liste Famille
Résultat attendu –Vue formulaire Famille
Résultat attendu Menu et vue liste sous famille
Résultat attendu Menu et vue formulaire sous famille
Résultat attendu article