1. La vérification en six passages
- Connectez-vous comme utilisateur interne autorisé par
base.group_user, ouvrez/formationset notez le titre rendu. - Vérifiez d'abord le lien de liste
/odoo/action-elearning_portal.elearning_module_action, puis un lien individuel/odoo/action-elearning_portal.elearning_module_action/<id>. La session et les ACL doivent être respectées. - Déconnectez-vous, rechargez
/formationset observez le refus ou la redirection attendue pourauth="user". Ce paramètre exige une session ; l'ACL du groupebase.group_userdécide ensuite si l'utilisateur peut lire. - Repassez connecté, parcourez les liens avec Tab et vérifiez le focus visible.
- Testez environ 360 px de large : aucune carte ni aucun lien ne doit sortir de l'écran.
- Si vous disposez déjà d'une copie locale de la base avec un jeu vide, ouvrez-la et vérifiez le message d'absence. Sinon, relisez la branche
t-if="not modules"sans supprimer les deux formations de départ.
Après chaque passage, écrivez une phrase commençant par « J'observe… ». Cette trace vous aidera à distinguer un problème de données d'un problème de rendu.
2. Aide progressive en trois niveaux
Niveau 1 — indice
- La page est-elle atteinte, mais vide ? Pensez au model, aux droits et au recordset.
- La page renvoie une erreur de template ? Pensez au nom technique partagé par Python et QWeb.
- Le lien interne s'ouvre mal ? Pensez à la session, à l'ACL
base.group_user, à l'URL d'action Odoo 19 et à l'identifiant du record. - Le mobile déborde ? Pensez à la classe de colonne et au texte trop long.
Niveau 2 — emplacement
- « Aucun record » : contrôlez
custom_addons/elearning_portal/controllers/main.py, la propriétérequest.env["elearning.module"], puis les ACL de l'utilisateur. - « Template introuvable » : contrôlez
custom_addons/elearning_portal/views/templates.xml, l'idformations_page, et l'import du contrôleur. - « Liste ou fiche refusée » : contrôlez la session, le groupe
base.group_user, puis l'URL/odoo/action-elearning_portal.elearning_module_actionou/odoo/action-elearning_portal.elearning_module_action/<id>, sans ajoutersudo(). - « Débordement » : contrôlez
col-12 col-md-6, les marges et les titres longs.
Niveau 3 — correction possible
Si la route est vide, vérifiez que l'utilisateur lit bien elearning.module et que la base contient une fiche fictive. Si le template est introuvable, vérifiez que elearning_portal.formations_page est écrit à l'identique dans request.render() et dans id, puis redémarrez et mettez le module à niveau. Si la liste ou la fiche interne est refusée, gardez auth="user", confirmez la session et donnez uniquement l'ACL nécessaire à base.group_user ; corrigez l'URL Odoo 19 ou l'ID, sans contourner la sécurité. Si le mobile déborde, revenez à une seule colonne en largeur étroite et testez à nouveau.
3. Erreurs fréquentes à reconnaître
- Le fichier Python n'est pas importé : le code paraît juste, mais aucune route n'existe. Observez les logs au redémarrage et vérifiez les deux
__init__.py. - Le template n'est pas déclaré : la route est trouvée, puis QWeb signale un template inconnu. Vérifiez
datadans le manifeste et mettez le module à niveau. - Les mauvais champs sont exposés : retirez les notes ou champs d'administration du contexte ; une page Website doit recevoir le minimum utile.
- Le lien est rendu public par erreur : rappelez-vous que le HTML ne donne aucun droit. Gardez la session interne et les ACL.
- Une commande prétend publier : arrêtez-vous. Ce laboratoire est local ; aucune synchronisation, publication ou mise en production ne fait partie de l'exercice.
4. Synthèse orale
Expliquez le trajet sans lire votre écran : « la session appelle la route /formations ; le contrôleur lit elearning.module avec les droits de l'utilisateur ; il transmet un contexte limité ; elearning_portal.formations_page appelle website.layout et rend du texte échappé ; le lien vers la fiche retourne au back-office authentifié ». Ajoutez ensuite ce qui resterait à tester avant une vraie publication — et rappelez que cette page ne publie rien.
Vous avez une page locale, un résultat visible après chaque action, un test de session, un test au clavier et sur mobile, ainsi qu’une piste de diagnostic. Gardez vos observations : elles serviront de point de départ au Jour 4.