École Nationale Polytechnique d'Oran Maurice Audin (ENPO-MA)
Département Génie des Systèmes
Module : Progiciel de Gestion Intégrés (ERP)
TP N°05 : Développement spécifique d’un ERP (Intégration)
- Création de Votre Première Application Sous Odoo 14 –Partie 02
-
Objectifs du TP : Objectifs du TP : Dans ce TP nous allons découvrir comment créer les
groupes de sécurités et droits d’accès nécessaires. Nous continuons aussi, la personnalisation
des vues de bases (Liste, recherche et formulaire) de notre application.
1. Création des groupes de sécurités :
Dans le TP précédent, nous avons utilisé le super-utilisateur pour accéder à notre application,
ce qui n’est pas pratique.
Nous allons plutôt définir deux groupes de base ; le groupes des administrateurs qui ont tous
les droits de lecture et de modification, et un groupe des utilisateurs qui ont uniquement le
droit de lecture.
Pour se faire nous allons tout d’abord créer un fichier xml, dans le répertoire security, qui
définit le groupe administrateur, ce fichier aura le nom de : groups.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="group_ag_managers" model="res.groups">
<field name="name">Agence Managers</field>
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
</record>
</odoo>
Comme vous pouvez le constater, nous avons créé un groupe qui a comme id
« group_ag_managers », à partir du modèle Odoo res.groups.
Le groupe créé hérite de la catégorie administrateurs ‘base.user_admin , qui donne tous les
droits d’accès à un modèle.
Les autres utilisateurs entrent dans la catégorie générale des utilisateurs qui ont le droit de
lecture uniquement.
2. Définition des droits d’accès :
Toujours dans le répertoire security, Ajoutez le fichier nommé ir.model.access.csv et mettez
le code suivant :
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
acl_agence_users,agence.vehicule default,model_agence_vehicule,,1,0,0,0
acl_agence_admin,agence.vehicule_admin,model_agence_vehicule,group_ag_managers,
1,1,1,1
La définition des droits d’accès doit se faire sur chaque nouveau modèle créé, dans un fichier
csv.
Dans la première ligne du fichier ir.modele.access.csv , on définit le modèle général de
définition des droits d’accès pour un groupe donné.
Si on ne met pas le nom du groupe, comme la première ligne de notre fichier, cela indique que
ce sont les droits des utilisateurs par défaut, qui ont comme droit de lecture seulement.
Les administrateurs qui appartiennent au groupe précédemment créé (group_ag_managers
ont les droits de modification, création suppression et de mise à jour.
3. Déclaration des nouveaux fichiers dans le fichier de base __manifest__
Pour que les changements seront pris en compte par le compilateur Odoo, nous déclarons les
deux fichiers de configuration des droits d’accès dans le fichier de base __manifest__.py.
Ajoutez donc, dans l’ordre les deux lignes suivantes :
'data': [
'security/groups.xml',
'security/ir.model.access.csv',
'views/agence_vehicule.xml'
],
On profite l’occasion pour ajouter d’autres informations à notre fichier __manifest__.py,
pour préciser l’ordre de l’affichage de l’application, et que le module est une application
installable. On précise également que l’application ne s’installe pas automatiquement mais
manuellement.
'application': True ,
'installable': True ,
'auto_install': False,
'sequence': 1,
4.Ajouter une Vue Formulaire personnalisée :
Pour personnaliser la vue formulaire, nous allons dans notre fichier créé précédemment dans
le dossier views (agence_vehicule.xml) , puis nous y ajoutons le « rercord » suivant :
<record id="agence_vehicule_view_form" model="ir.ui.view">
<field name="name">Agence Vehicule Form</field>
<field name="model">agence.vehicule</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="marque"/>
<field name="modele"/>
<field name="chaffeur_ids" widget="many2many_tags"/>
</group>
<group>
<field name="date_achat"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
Nous avons ajouté la définition de la vue formulaire à partir du modèle Odoo de
base model="ir.ui.view", puis le modèle ‘agence.vehicule’ que nous voulons représenter ces
données sous forme formulaire, à travers la balise
<form>.
On ajoute la balise <form> pour préciser qu’il s’agit d’une vue formulaire, et dedans on
déclare les champs à représenter de la façon souhaitée.
On peut donc représenter la même information sous plusieurs formes avec les widgets xml.
Ajoutez la balise <group> pour mieux représenter les champs (fields) et La
balise <sheet> pour afficher la vue formulaire sous forme d’une page .
5.Ajout d’une Vue Liste personnalisée :
Comme dans la vue Formulaire on ajoute dans le fichier views/agence_vehicule.xml , un
nouveau enregistrement (record), et au lieu de mettre la balise form on met la balise liste pour
indiquer qu’il s’agit d’une vue liste (tableau de colonnes).
<record id="agence_vehicule_tree" model="ir.ui.view">
<field name="name">Agence Vehicule Liste</field>
<field name="model">agence.vehicule</field>
<field name="arch" type="xml">
<tree>
<field name="marque"/>
<field name="modele"/>
<field name="date_achat"/>
</tree>
</field>
</record>
6.Ajouter et personnaliser Une Vue Recherche :
La vue recherche permet de rechercher, de classifier et de regroupez les informations du
modèle en cours. On peut personnaliser les enregistrements à rechercher, les filtres et les
regroupements.
Dans notre exemple et toujours dans le fichier des vue agence_vehicule.xml, nous ajoutons
de la même façon que la vue liste et formulaire, la vue recherche, en mettant la balise search .
Nous ajoutons un filtre qui permet d’afficher uniquement les véhicules qui n’ont pas des
chauffeurs.
<record id="agence_vehicule_search" model="ir.ui.view">
<field name="name">Agence Vehicule Recherche</field>
<field name="model">agence.vehicule</field>
<field name="arch" type="xml">
<search>
<field name="marque"/>
<field name="modele"/>
<field name="date_achat"/>
<filter string="Sans Chaffeurs"
name="without_driver"
domain="[('chaffeur_ids','=',False)]"/>
</search>
</field>
</record>
7. Redémarrage du service Odoo et Mise à jour de notre application
Pour afficher les changements sur notre module, on doit tout d’abord redémarrer le service
Odoo 14, puis faire la mise à jour de notre application dans le menu mise à jour de la liste des
applications.
Remarques :
Dans le cas du changement au niveau des fichiers pythons, on doit redémarrer le
service Odoo
Dans le cas du changement aux niveaux des fichiers xml, on doit actualiser l’affichage
et mettre à jour le module qu’on a effectué les modifications
Dans le cas de modification au niveau des fichiers python et fichiers xml, on doit
redémarrer le serveur Odoo puis mettre à jour le module.
On peut visualiser tous les changements effectués (l’ajout des vues, des modèles, dans
la partie technique de l’interface Odoo ( après l’activation du mode développeur) ,
Idem pour l’ajout des nouveaux groupes en allant sur la partie configuration puis dans
la partie utilisateurs et société cliquer sur groupes (là également il faut activer le mode
développeur).
Conclusion
Dans ce TP, nous avons complété notre application créée durant la première partie, en y a
joutant les vue et les droits d’accès nécessaires.
Nous avons commencé par la définition des droits d’accès pour pouvoir visualiser les
différentes parties de notre application.
Ensuite, nous avons créé les vues de base qui sont la Vue Formulaire, la vue liste et recherche,
qui sont les vue de base qui sont présent pratiquement sur tous les vues Odoo.