Étape 1 sur 3 · 25 min

Créer l’addon des formations

Les notes créées au jour 2 restent dans training_hello. Vous allez maintenant créer elearning_portal pour gérer des formations qui utilisent ces notes, sans jamais les recopier.

Un addon et une formation, ce n’est pas la même chose

elearning_portal est le nom de l’addon, donc du dossier de code qu’Odoo installe. Une formation est une donnée créée par cet addon : c’est un record du model elearning.module, par exemple « Bases du développement Odoo ». Dans la suite, le mot formation désigne cette donnée, jamais l’addon.

1. Vérifiez ce qui existe déjà

Dans Apps, vérifiez que Hello Odoo est installé et à jour. Ouvrez ensuite Notes de formation → Notes. Vous devez voir Bienvenue, Observer avant de modifier et Une base d’exercice.

Résultat attendu : l’addon training_hello contient déjà le model training.note, ses droits d’accès et ses données de départ. Ne recréez rien de tout cela dans le nouvel addon.

2. Créez l’addon des formations

Reprenez l’environnement du jour 1 et utilisez une seule commande, celle qui correspond à votre installation. Le nom technique elearning_portal doit rester différent de training_hello.

Environnement Odoo installé depuis les sources

Linux/macOS · racine du workspace
.venv/bin/python src/odoo/odoo-bin scaffold elearning_portal custom_addons
PowerShell · racine du workspace
.\.venv\Scripts\python.exe .\src\odoo\odoo-bin scaffold elearning_portal .\custom_addons

Odoo dans Docker Compose

Docker Compose · dossier du fichier Compose
docker compose exec odoo odoo scaffold elearning_portal /mnt/extra-addons

Dans cette dernière commande, /mnt/extra-addons doit correspondre au bind mount de votre dossier custom_addons/. Si votre conteneur utilise un autre chemin, reprenez celui que vous avez vérifié au jour 1.

Ouvrez custom_addons/elearning_portal/ dans l’explorateur de fichiers.

À observer : vous y trouvez notamment __init__.py, __manifest__.py et les dossiers models/, controllers/, security/ et views/. Le scaffold crée ces fichiers, mais n’installe encore rien dans votre base.

Si le dossier existe déjà

Ne relancez pas la commande. Ouvrez custom_addons/elearning_portal/ et comparez son contenu avec cette étape avant de continuer.

3. Préparez le manifeste de l’addon

Remplacez le manifeste généré par cette première version. Il indique simplement qu’elearning_portal a besoin de training_hello avant de pouvoir utiliser ses notes.

custom_addons/elearning_portal/__manifest__.py
{
    "name": "Portail de formations",
    "summary": "Relier des formations aux notes du module de formation",
    "version": "19.0.1.0.0",
    "category": "Training",
    "author": "Formation Odoo",
    "license": "LGPL-3",
    "depends": ["training_hello"],
    "data": [],
    "application": True,
    "installable": True,
}

La clé depends dit à Odoo dans quel ordre charger les addons. Ici, il charge d’abord training_hello, puis elearning_portal. Les notes restent là où elles sont : la dépendance permet de les utiliser, elle ne les déplace pas.

À observer : website n’apparaît pas encore dans les dépendances. Vous l’ajouterez plus tard, lorsque l’addon aura besoin d’une route et d’un template Website.

4. Laissez chaque addon à sa place

  • Dans custom_addons/elearning_portal/models/, vous créerez le model des formations.
  • Dans custom_addons/elearning_portal/security/, vous ajouterez les droits sur ces formations.
  • Dans custom_addons/elearning_portal/views/, vous créerez les écrans internes, puis le template Website.
  • Vous n’utiliserez custom_addons/elearning_portal/controllers/ qu’à la partie Website.

Ne copiez ni la classe TrainingNote, ni le CSV, ni les fichiers de données de training_hello. À l’étape suivante, une relation suffira pour associer les formations aux notes existantes.

Résultat attendu

Vous avez maintenant deux addons distincts. training_hello continue de gérer les notes. elearning_portal est prêt à gérer les formations qui y seront associées.