Développer un module de progiciel

Ajouter à un progiciel sans toucher à son standard, sur l'exemple d'Odoo : anatomie d'un module, dépendances, extension d'un modèle et d'un écran, champ calculé, droits d'accès et survie à une montée de version.

  • 23 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Module de progiciel : de quoi s'agit-il ?

    Voir la réponse

    Dossier autonome qui regroupe un manifeste, des modèles, des vues, des droits et des données, et qu'on installe ou retire sans toucher au reste de l'application.

    Tout Odoo est fait de modules, y compris les ventes ou la facturation. Ajouter une fonction, c'est écrire un module de plus, empilé sur les autres.

  • Que fait ce code ?

    ```python
    class SaleOrder(models.Model):
    _inherit = 'sale.order'

    return_date = fields.Date()
    `

    • Il ajoute return_date au modèle existant sale.order, dans sa table
    • Il crée un nouveau modèle distinct, copie de sale.order, avec sa table
    • Il remplace le modèle sale.order par une classe qui n'a que ce champ
    • Il modifie le fichier du module sale pour y inscrire le champ ajouté
    Voir la réponse

    Il ajoute return_date au modèle existant sale.order, dans sa table

    Avec _inherit seul, on complète le modèle existant. Avec un _name différent en plus, on obtiendrait une copie dans une nouvelle table. Le fichier de sale n'est jamais touché.

  • Dans le manifeste, la clé … liste les modules à installer avant le nôtre, et la clé … liste les fichiers de vues, de droits et de données chargés à l'installation.

    Voir la réponse

    Dans le manifeste, la clé depends liste les modules à installer avant le nôtre, et la clé data liste les fichiers de vues, de droits et de données chargés à l'installation.

    Odoo installe les dépendances d'abord, puis charge les fichiers de data dans l'ordre de la liste : les droits et groupes avant les vues qui s'en servent.

  • Manifeste d'un module : de quoi s'agit-il ?

    Voir la réponse

    Fichier __manifest__.py qui décrit le module : son nom, sa version, les modules dont il dépend et la liste des fichiers de données et de vues à charger.

    Sans lui, Odoo ignore le dossier. Un fichier qui cite un modèle ou une vue d'un autre module n'est sûr de les trouver que si ce module figure dans depends : sinon, l'installation peut échouer.

  • Le module de prêt est installé, mais les vendeurs obtiennent « Accès refusé » sur le nouveau modèle de prêt, alors que l'administrateur technique y accède. Que fait-on ?

    • Mettre tous les vendeurs dans le groupe des administrateurs techniques pour qu'ils y accèdent
    • Rendre obligatoire le champ de l'emprunteur dans le modèle de prêt puis mettre le module à jour
    • Ajouter 'sale' à la liste depends du manifeste, puis réinstaller entièrement le module
    • Ajouter dans ir.model.access.csv une ligne qui donne au groupe des vendeurs ses droits sur le modèle
    Voir la réponse

    Ajouter dans ir.model.access.csv une ligne qui donne au groupe des vendeurs ses droits sur le modèle

    Un modèle neuf n'est ouvert qu'aux groupes qu'une ligne de ce fichier nomme : ici, seuls les administrateurs en ont une. Faire des vendeurs des administrateurs ouvrirait bien plus que le prêt : on donne le strict nécessaire.