1. Créez le fichier de sécurité
Dans le dossier security déjà utilisé pour l'ACL, créez le fichier suivant. Recopiez le domaine sans ajouter d'autre condition.
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="training_note_rule_own" model="ir.rule">
<field name="name">Notes de formation : notes du propriétaire</field>
<field name="model_id" ref="model_training_note"/>
<field name="groups"
eval="[Command.link(ref('group_training_note_user'))]"/>
<field name="domain_force">[('user_id', '=', user.id)]</field>
</record>
</odoo>2. Lisez chaque champ de la règle
training_note_rule_ownest l'identifiant externe stable de l'enregistrementir.rule.model_training_notedésigne le modèletraining.note, comme dans l'ACL.Command.link(ref('group_training_note_user'))relie la règle au groupe Training Notes User créé dans la section 1. Il ne crée pas de groupe.[('user_id', '=', user.id)]est le domaine imposé. Odoo conserve un enregistrement seulement si son propriétaire est l'utilisateur de l'environnement courant.
Les indicateurs d'opération d'une nouvelle ir.rule sont actifs par défaut. Cette condition s'applique donc à la création, à la lecture, à la modification et à la suppression dans cet exercice.
L'ACL du CSV accorde au groupe le droit de demander une opération sur training.note. La règle limite ensuite les enregistrements qui peuvent subir cette opération. Si aucune ACL n'accordait la création, cette règle ne pourrait pas la rendre possible.
3. Déclarez le XML dans le manifeste
Dans la liste data, ajoutez le nouveau chemin après l'ACL des notes et avant les vues. Le fichier des groupes doit rester avant le CSV, car celui-ci utilise son external ID. Conservez toutes les autres entrées ainsi que la section assets déjà présente.
data"security/training_note_groups.xml",
"security/ir.model.access.csv",
"security/training_note_security.xml",
"views/training_note_views.xml",Le manifeste charge ainsi le fichier dans la base lors de la mise à niveau. Le simple fait de créer le XML sur le disque n'active aucune règle.
4. Mettez le module à niveau
- Action qui modifie la base d'exercice : ouvrez Applications, recherchez Hello Odoo, puis choisissez Mettre à niveau. Odoo crée alors l'enregistrement
ir.ruledécrit par le XML.
Vous avez modifié des fichiers de données XML et le manifeste, pas du code Python : la mise à niveau suffit, sans redémarrage d'Odoo.
Résultat attendu : la mise à niveau se termine sans erreur de XML ni d'identifiant externe. À partir de cet instant, les recherches et les opérations d'écriture sur training.note passent par le domaine du propriétaire pour les membres de Training Notes User.
N'ajoutez aucune élévation de privilèges pour faire disparaître un refus. La session ou la clé d'API doit rester associée à son utilisateur, afin que l'ACL et la règle sur les enregistrements soient réellement vérifiées.
5. Vérifiez l'enregistrement chargé
En mode développeur, ouvrez Paramètres → Technique → Sécurité → Règles d'enregistrement et recherchez Notes de formation : notes du propriétaire.
Point de contrôle — observez la règle dans Odoo
La fiche vise training.note, contient le groupe Training Notes User et affiche le domaine [('user_id', '=', user.id)]. Revenez ensuite aux notes : les tests avec Alex et Sam appartiennent à l'étape suivante.