Vous allez travailler avec custom_addons/elearning_portal/, la route /formations et le template elearning_portal.formations_page. Les formations viennent déjà de elearning.module ; ne recréez pas de données et ne recopiez pas le code des sections précédentes.
1. Commencez par observer l’existant
- Connectez-vous à Odoo avec votre utilisateur interne.
- Ouvrez
/formations. - Repérez les formations affichées sous forme de cartes.
- Ouvrez une carte et vérifiez le titre, la description et les notes associées.
- Revenez à la liste des formations, puis ouvrez la page du module Website.
Vous regardez le même record à deux endroits. Un record est un enregistrement stocké par Odoo. Website présente une version adaptée à la page ; la fiche interne affiche davantage de détails. Il ne s’agit pas de deux jeux de données.
2. Modifiez un détail, puis observez le résultat
Dans custom_addons/elearning_portal/views/templates.xml, modifiez un texte affiché : le titre de la page, le libellé du bouton ou le court texte d’introduction. Conservez les expressions t-foreach="modules", module.name et le lien vers la fiche.
Enregistrez le fichier, mettez Portail de formations à niveau dans Apps, puis rechargez /formations. Repérez votre modification. Si elle n’apparaît pas, vérifiez d’abord que vous avez mis à niveau le bon module, avant de modifier autre chose.
Modifiez ensuite la description d’une formation dans le back-office, c’est-à-dire l’interface interne d’administration. Rechargez la page Website : la même carte doit afficher la nouvelle valeur. Vous confirmez ainsi que le template, le modèle d’affichage, parcourt les records existants au lieu d’afficher du texte recopié dans le XML.
3. Vérifiez le résultat
- La page liste les formations présentes dans votre base d’exercice.
- Un clic ouvre la fiche de la formation choisie.
- Une modification dans le back-office se retrouve sur Website après rechargement.
- La page reste lisible avec une fenêtre étroite et au clavier.
- Une personne sans session ne peut pas lire cette page interne.
4. Consultez une fiche sans la modifier
view_mode="list,form" ne signifie pas « afficher la liste, puis ouvrir le mode édition ». form désigne simplement la view de détail d’un record. Pour un record existant, Odoo ouvre normalement cette view en lecture ; le bouton Modifier apparaît seulement si la personne a le droit d’écrire.
Pour empêcher l’édition dans cette view, gardez form et désactivez-la dans son architecture :
<form create="0" edit="0" delete="0">
<sheet>
<!-- fields de la formation -->
</sheet>
</form>Cette règle retire les actions de création, de modification et de suppression de cette view. Les ACL, c’est-à-dire les règles d’accès, restent la vraie sécurité : si vous devez aussi empêcher toute écriture par API ou par une autre view, retirez perm_write dans l’ACL du groupe concerné.
Il n’existe pas de type de view « fenêtre contextuelle » qui remplace form. Une fenêtre modale Odoo utilise elle aussi une form. On la lance avec une action dédiée dont la cible est new ; elle convient à une prévisualisation courte ou à un wizard, c’est-à-dire un assistant temporaire, mais pas à la navigation principale d’une liste.
{
"type": "ir.actions.act_window",
"res_model": "elearning.module",
"res_id": module.id,
"view_mode": "form",
"target": "new",
}Pour ce laboratoire, conservez l’ouverture normale : elle est plus simple à suivre et laisse la fiche détaillée occuper tout l’espace. Réservez target="new" à un bouton de prévisualisation clairement identifié.
Vous pouvez ouvrir la page, reconnaître les records qu’elle lit, modifier un texte du template, mettre le module à niveau et voir le résultat. Vous savez aussi pourquoi une form view n’est pas forcément une view d’édition.