Chapitre 6 : Création d’un module sur Odoo (part 10)

Les vues : Suivre les changements de valeur du champ

Comme Odoo est un système multi-utilisateurs où différents utilisateurs peuvent accéder au même enregistrement, il est utile de suivre les changements apportés aux champs par les utilisateurs individuels pour identifier qui a fait ce changement particulier et quand il a été fait. Dans Odoo, nous pouvons suivre les valeurs des champs, et chaque fois que la valeur d’un champ change, elle est enregistrée dans Chatter.

Dans cet exemple, je vais suivre le champ ‘Age’ dans le modèle de mon étudiant. Pour cela, j’ajoute le paramètre tracking=True à mon champ age.

Ici, j’ai ajouté tracking=True au champ âge. Une fois les modifications effectuées, mettez le module à jour. Actuellement, le champ âge contient ici la valeur 23 ; je la modifie en 24 et j’enregistre l’enregistrement.

Après avoir sauvegardé l’enregistrement, la modification apportée est enregistrée dans Chatter.

De même, nous pouvons suivre les modifications apportées à n’importe quel champ.

Nous allons maintenant voir comment ajouter des fonctionnalités d’activité de planification à Chatter.

Pour cela, nous devons hériter du modèle mail.activity.mixin dans notre modèle personnalisé.

Modifiez le fichier python comme indiqué ci-dessous.

Et dans le fichier XML, ajoutez le champ activity_ids.

Mettez à jour le module et voyez les changements.

Nous pouvons maintenant voir que le bouton Planifier une activité a été ajouté au chat pour planifier des activités directement à partir du chat.

De même, nous pouvons ajouter le chat à n’importe quelle vue de formulaire pour une communication et une traçabilité efficaces.

Activité : suivre les modifications dans des champs

Dans cet exercice, nous allons ajouter le suivi (tracking) aux champs spécifiques du modèle HospitalPatient du fichier patient.py, en utilisant l’attribut tracking=True. Les champs concernés sont : name, age, notes, gender, et is_child.

  1. Ouvrez le fichier patient.py qui définit le modèle HospitalPatient.
  2. Ajoutez l’importation du module fields dans la liste des importations en haut du fichier :
from odoo import models, fields
  1. Dans la classe HospitalPatient, modifiez les définitions des champs concernés en ajoutant tracking=True comme suit :
class HospitalPatient(models.Model):
    _name = 'hospital.patient'
    _description = "Patient Records"
    _inherit = 'mail.thread'

    name = fields.Char(string='Name', required=True, tracking=True)
    age = fields.Integer(string='Age', tracking=True)
    notes = fields.Text(string='Notes', tracking=True)
    gender = fields.Selection([('male', 'Male'), ('female', 'Female')], string='Gender', tracking=True)
    is_child = fields.Boolean(string='Is Child ?', tracking=True)

    # Autres champs et méthodes du modèle...
  1. Enregistrez vos modifications dans le fichier patient.py.
  2. Redémarrez votre serveur Odoo pour appliquer les modifications.

Maintenant, les champs name, age, notes, gender, et is_child du modèle HospitalPatient seront suivis individuellement. Chaque fois que vous modifiez la valeur d’un de ces champs, la modification sera enregistrée dans l’historique des modifications du modèle. Vous pourrez voir les modifications apportées aux champs dans l’interface utilisateur d’Odoo en accédant à l’enregistrement du patient et en consultant l’onglet « Historique des modifications » ou l’onglet « Champs modifiés ».

Assurez-vous que le modèle HospitalPatient est correctement chargé dans votre application Odoo et que vous disposez des droits d’accès appropriés pour afficher et utiliser la fonctionnalité de suivi des champs.