Création de Modules Odoo

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 27

Création de modules

Odoo

Odoo 14 17/10/2022 1
2 Introduction

 Maintenant que nous avons un environnement de développement et que nous


savons comment gérer les instances du serveur et les bases de données Odoo, vous
pouvez apprendre à créer des modules complémentaires Odoo.

 Notre objectif principal dans ce chapitre est de comprendre comment créer et


structurer un module. Les différents composants mentionnés seront traités en
détail dans les chapitres suivants.

Odoo 14 17/10/2022
3 Introduction

Dans ce chapitre, nous aborderons les recettes suivantes :


 Création et installation d'un nouveau module
 Remplir le fichier __manifeste__,py du module
 Organisation de la structure des fichiers du module
 Ajout de modèles
 Ajout d'éléments de menu et de vues
 Ajout de la sécurité d'accès

Odoo 14 17/10/2022
4 Création et installation d'un nouveau module

 Dans cette partie, nous allons créer un nouveau module, le rendre


disponible dans notre instance Odoo et l'installer.
 Pour commencer, nous aurons besoin d'une instance Odoo prête à
l'emploi.
 Nous aurons également besoin d'un emplacement pour ajouter nos
propres modules Odoo. Pour notre cas on utilisera un autre
répertoire à coté du répertoire addons d’Odoo nommé
« ENSAH_addons ».

Odoo 14 17/10/2022
5 Création et installation d'un nouveau module

 A titre d'exemple, pour ce chapitre, nous allons créer un petit


module pour gérer une liste des livres pour la bibliothèque.
 Les étapes suivantes créeront et installeront un nouveau module
 Changez le répertoire de travail dans lequel nous allons travailler et
créez le répertoire où sera placé notre module personnalisé :
C:\Program Files\odoo 14\server\odoo\ENSAH_addons
 Choisissez un nom technique pour le nouveau module et créez un
répertoire avec ce nom pour le module. Pour notre exemple, nous
utiliserons library :
C:\Program Files\odoo 14\server\odoo\ENSAH_addons\ library
Odoo 14 17/10/2022
6 Création et installation d'un nouveau module
 Rendez le module Python importable en ajoutant un fichier __init__.py :
 Ajoutez le fichier manifeste avec un code minimal pour qu'Odoo le
détecte en tant que module. À l'intérieur du dossier library, créez un
fichier __manifest__.py avec cette ligne, puis sauvegarder:
{'name': ‘My library'}
 Démarrer votre instance Odoo en tant que admin.
 Activez le mode développeur dans la boîte À propos, et dans le menu
supérieur des applications, sélectionnez Mettre à jour la liste des
applications. Maintenant, Odoo devrait connaître notre module Odoo :
 Maitre à jour la liste de modules locaux
 Sélectionnez le menu Apps en haut et, dans la barre de recherche dans le
coin supérieur droit, supprimez le filtre Apps par défaut et recherchez
my_library. Cliquez sur le bouton Installer et l'installation sera terminée.
Odoo 14 17/10/2022
Création et installation d'un nouveau module
7
 Remplir le manifeste du module complémentaire:
 Le fichier manifeste est un élément important pour les modules Odoo. Il contient
des métadonnées importantes sur le module, la version, les méta-datas, les
dépendances et déclare les fichiers de données qui doivent être chargés…
{
'name': « My library",
'summary': "Gestion des livres d’une bibliothèques",
'description': """
Manage books
==============
Description related to library.
""",
'author': "Votre nom (ou equipe)",
'website': "http://www.gi3equiedev.com",
'category': 'Uncategorized',
'version': '14.0.1',
'depends': ['base'],
'data': [''],
}
Odoo 14 17/10/2022
Pour ajouter une icône pour le module, choisissez une image PNG à utiliser et copiez-la
dans static/description/icon.png.
8 Description du fichier __manifeste__.py
 name :Le nom du module en anglais.
 version :La version du module.
 résumé :Courte description ou mots-clés
 description :Description du module (texte).
 catégorie :La catégorie du module
 author :L'auteur du module.
 website :URL du site Web du site Web du module.
 license :La licence du module (par défaut: AGPL-3).
 depends :Liste des modules sur lesquels ce module dépend à côté de la base.
 data :Liste des fichiers .xml à charger lorsque le module est installé ou mis à jour.
 demo :Liste des fichiers .xml supplémentaires à charger lorsque le module est installé ou mis à
jour et l'indicateur de démonstration est actif.
 installable :Vrai ou Faux. Détermine si le module est installable ou pas.
 auto_install :True ou False (par défaut: False). Si défini sur «True», le module est un module de liaison. Il
Odoo 14 17/10/2022
sera installé dès que toutes ses dépendances sont installées.
9 Organisation de la structure des fichiers du
module
 Un module complémentaire contient des fichiers de code et d'autres
actifs, tels que des fichiers XML et des images. Pour la plupart de
ces fichiers, nous sommes libres de choisir où les placer dans le
répertoire du module.

 Cependant, Odoo utilise certaines conventions sur la structure des


modules, il est donc conseillé de les suivre.

Odoo 14 17/10/2022
10 Organisation de la structure des fichiers du
module

 La première étape de création d’un


module est de respecter la structure des
répertoires de notre module.
 Cela devrait nous permettre de démarrer
avec une structure contenant les
répertoires les plus fréquemment
utilisés, similaire à celle-ci :

Odoo 14 17/10/2022
11 Organisation de la structure des fichiers du
module
 Modifiez le fichier __init__.py supérieur du module afin que le
code des sous-répertoires soit chargé :

Odoo 14 17/10/2022
Organisation de la structure des fichiers du
12
module
 un module Odoo peut avoir trois types de fichiers :
 Le code Python est chargé par le fichier __init__.py, où les
fichiers .py et les sous-répertoires de code sont importés. Les sous-
répertoires contenant du code Python, à leur tour, ont besoin de leur
propre fichier __init__.py.
 Fichiers de données à déclarer dans les clés data et demo dans le
manifeste du module (__manifest__.py) à charger sont
généralement des fichiers XML et CSV pour l'interface utilisateur.
 Ressources Web telles que le code et les bibliothèques JavaScript,
les modèles CSS, SASS et QWeb/HTML. Ces fichiers sont utilisés
pour créer des parties d'interface utilisateur et gérer les actions de
l'utilisateur dans ces éléments d'interface utilisateur.
Odoo 14 17/10/2022
Organisation de la structure des fichiers du
13
module
 Les fichiers doivent être organisés dans les répertoires suivants :
Models: contient les fichiers Python
Views: contient les fichiers interface xml
Data: contient d'autres fichiers de données avec les données initiales du module.
Demo: contient des fichiers de données avec des données de démonstration, ce
qui est utile pour les tests, la formation ou l'évaluation de module.
I18n: C'est là qu'Odoo cherchera les fichiers de traduction .pot et .po.
Security: contient les fichiers de données qui définissent les listes de contrôle
d'accès
Controllers: contient les fichiers de code pour les contrôleurs de site Web et
pour les modules offrant ce genre de fonctionnalité
Static: est l'endroit où tous les actifs Web doivent être placés
Wizard:contient tous les fichiers liés aux assistants. Dans Odoo, les assistants
sont utilisés pour contenir des données intermédiaires.
Report: Odoo fournit une fonctionnalité pour générer des documents PDF tels
Odoo 14 17/10/2022
que des ventes, commandes et factures.
Ajout de modèles
14

Les modèles définissent les structures de données qui seront


utilisées par nos applications métiers. Dans cette partie on verra
comment ajouter un modèle de base à un module.

Dans notre exemple, nous voudrions gérer les livres d’une


bibliothèque.

Pour ajouter un nouveau modèle, nous devons ajouter un fichier


Python le décrivant, puis mettre à niveau le module (ou l'installer,
si cela n'a pas été déjà fait). Les chemins utilisés sont relatifs à
l'emplacement de notre module (par exemple, C:\Program
Odoo 14 Files\odoo14\server\odoo\ENSAH_addons\library): 17/10/2022
Ajout de modèles
15
 Ajoutez un fichier Python au module models/library_book.py avec le code suivant :
# -*- coding: utf-8 -*-
from odoo import models, fields
class LibraryBook(models.Model):
_name = 'library.book'
_description = 'Library Book'
name = fields.Char('Title', required=True)
date_release = fields.Date('Release Date')
active = fields.Boolean(default=True)
author_ids = fields.Many2many('res.partner', string='Authors')
state = fields.Selection(
[('available', 'Available'),
('borrowed', 'Borrowed'),
('lost', 'Lost')],
'State', default="available")
cost_price = fields.Float('Book Cost')
category_id = fields.Many2one('library.book.category')
 Ajoutez un fichier d'initialisation Python avec les fichiers de code à charger par le module
models/__init__.py avec le code suivant : from . import library_book
Odoo 14 17/10/2022
16 Ajout de modèles
 Modifiez le fichier d'initialisation Python du module pour que le répertoire models/ soit
chargé par le module : from . import models
 Mettez à niveau le module Odoo,
 vous pouvez le vérifier dans l'interface utilisateur d'Odoo. Activez les outils de
développement et ouvrez le menu dans Paramètres >> Technique >> Structure de la
base de données >> Des modèles. Recherchez le modèle library.book.

Odoo 14 17/10/2022
Ajout de modèles
17

Notre première étape a été de créer un fichier Python dans


lequel notre nouveau module a été créé.

Le Framework Odoo a son propre Framework ORM


(Object Relational Mapping). Ce Framework ORM fournit
une abstraction sur la base de données PostgreSQL. En
héritant de la classe Odoo Python Model, nous pouvons
créer notre propre modèle (table). Lorsqu'un nouveau
modèle est défini, il est également ajouté à un registre de
modèles central. Cela permet aux autres modules d'y
apporter plus facilement des modifications ultérieurement.
Odoo 14 17/10/2022
Ajout de modèles
18

Les modèles ont quelques attributs génériques précédés


d'un trait de soulignement. Le plus important est _name,
qui fournit un identifiant interne unique qui sera utilisé
dans toute l'instance Odoo.
Le Framework ORM générera la table de base de données
basée sur cet attribut.
Dans notre cas, nous avons utilisé:_name = 'library.book'.
 Sur la base de cet attribut, le Framework ORM créera une nouvelle
table appelée library_book.
 Il faut notez que le Framework ORM créera un nom de table en
remplaçant . avec _ dans la valeur de l'attribut _name.
Odoo 14 17/10/2022
Ajout de modèles
19

 Les champs de modèle sont définis comme des attributs de classe. Nous
avons commencé par définir le champ name du type Char.
 Nous avons également utilisé un exemple de champ relationnel –
author_ids. Cela définit une relation plusieurs-à-plusieurs(Many2many)
entre les livres de bibliothèque et leurs partenaires, car un livre peut avoir
plusieurs auteurs et chaque auteur peut avoir écrit plusieurs livres.
 Ensuite, nous devons rendre notre module conscient de ce nouveau fichier
Python. Ceci est fait par les fichiers __init__.py
 Puisque nous avons placé le code dans le sous-répertoire models/, nous
avons besoin du fichier __init__ précédement créé pour importer ce
répertoire, qui devrait à son tour contenir un autre fichier __init__, en y
important chacun des fichiers de code (un seul, dans notre cas).
 Ces modification sont prise en charges en mettant a jours le module.
Odoo 14 17/10/2022
Ajout d'éléments de menu et de vues
20

Une fois que nous avons des modèles pour nos besoins en
structure de données, nous voulons une interface
utilisateur afin que nos utilisateurs puissent interagir avec
eux. Cette recette s'appuie sur le modèle Library Book de
la recette précédente et ajoute un élément de menu pour
afficher une interface utilisateur avec des vues de liste et
de formulaire.

Odoo 14 17/10/2022
Ajout d'éléments de menu et de vues
21

Pour ajouter une vue, nous ajouterons un fichier XML


avec sa définition au module. Puisqu'il s'agit d'un nouveau
modèle, nous devons également ajouter une option de
menu pour que l'utilisateur puisse y accéder.

Sachez que la séquence des étapes suivantes est pertinente,


car certaines d'entre elles utilisent des références à des ID
définis dans les étapes précédentes :

Odoo 14 17/10/2022
Ajout d'éléments de menu et de vues
22

1. Créez le fichier XML pour ajouter les enregistrements de données


décrivant l'interface utilisateur, views/library_book_view.xml :
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Data records go here -->
</odoo>

Ajoutez le nouveau fichier de données au manifeste du module


complémentaire, __manifest__.py, en l'ajoutant à
views/library_book.xml :
{
'name':" My library",
'summary': "Gestion des livres d’une bibliothèques",
'depends': ['base'],
'data': ['views/library_book.xml'],
Odoo 14 } 17/10/2022
Ajout d'éléments de menu et de vues
23

Ajoutez l'action qui ouvre les vues dans le fichier


views/library_book_view.xml :
<record id='library_book_action' model='ir.actions.act_window'>
<field name="name">Library Books</field>
<field name="res_model">library.book</field>
<field name="view_mode">tree,form</field>
</record>

Ajoutez les éléments de menu au fichier library_book_view.xml, en


le rendant visible pour les utilisateurs :
<menuitem name="My Library" id="library_base_menu" />
<menuitem name="Books" id="library_book_menu"
Odoo 14
parent="library_base_menu" action="library_book_action"/> 17/10/2022
Ajout d'éléments de menu et de vues
24
Ajoutez une vue de formulaire personnalisée au fichier
library_book_view.xml :
<record id="library_book_view_form" model="ir.ui.view">
<field name="name">Library Book Form</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="name"/>
<field name="author_ids"
widget="many2many_tags"/>
</group>
<group>
<field name="date_release"/>
</group>
</group>
</form>
</field>
Odoo 14 17/10/2022

</record>
Ajout d'éléments de menu et de vues
25
Ajoutez une vue de formulaire personnalisée au fichier
library_book_view.xml :

Odoo 14 17/10/2022
Ajout d'éléments de menu et de vues
26
Ajoutez une vue (liste) au fichier library_book_view.xml :
<record id="library_book_view_tree" model="ir.ui.view">
<field name="name">Library Book List</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="date_release"/>
</tree>
</field>
</record>

Odoo 14 17/10/2022
Ajout d'éléments de menu et de vues
27
Ajoutez des options de recherche personnalisées au fichier
library_book_view.xml
<record id="library_book_view_search" model="ir.ui.view">
<field name="name">Library Book Search</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="author_ids"/>
<filter string="No Authors"
name="without_author"
domain="[('author_ids','=',False)]"/>
</search>
</field>
</record>

Odoo 14 17/10/2022

Vous aimerez peut-être aussi