Étape 2 sur 4

Créer le squelette

La commande scaffold crée la structure standard d'un module. Nous allons ensuite la réduire au strict nécessaire pour comprendre le premier résultat.

1. Demandez la structure à Odoo

Si le serveur occupe votre terminal, ouvrez un second terminal à la racine du workspace. La commande scaffold crée des fichiers ; elle ne modifie pas la base et n'a pas besoin que le serveur tourne.

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

training_hello est le nom technique : minuscules, caractères ASCII et underscore. custom_addons est le dossier qui accueillera le module.

Option B — environnement Docker

Avec la section 1B, le fichier compose.yaml monte votre dossier local dans le conteneur. Lancez le scaffold dans le service Odoo : l'exécutable est alors celui de l'image, pas une commande installée sur votre machine.

Docker Compose · dossier de compose.yaml
docker compose exec odoo odoo scaffold training_hello /mnt/extra-addons

À observer : custom_addons/training_hello/ apparaît sur votre machine via le volume. Si votre montage utilise un autre chemin, remplacez seulement /mnt/extra-addons par le chemin réellement déclaré dans Compose.

2. Lisez avant de supprimer

Dans custom_addons/training_hello/, le scaffold propose plusieurs familles de besoins :

  • models/ pour les objets métier Python ;
  • controllers/ pour les routes HTTP ;
  • views/ pour des interfaces et templates XML ;
  • security/ pour les droits ;
  • demo/ pour des données facultatives d'apprentissage ;
  • __manifest__.py et __init__.py pour présenter et charger le paquet.

Notre résultat ne définit ni modèle, ni route, ni écran. Dans l'explorateur de l'éditeur, supprimez controllers/, demo/, models/, security/ et views/. Gardez uniquement les deux fichiers racine. Cette opération est identique avec ou sans Docker : le dossier est monté sur votre machine.

3. Rendez le paquet explicitement vide

custom_addons/training_hello/__init__.py
# Ce premier module ne charge encore aucun sous-paquet Python.

À observer : custom_addons/training_hello/ contient maintenant __init__.py et __manifest__.py. Rien n'apparaît encore dans Odoo : créer un dossier n'installe pas un module dans une base.