diff options
Diffstat (limited to 'addons/mail/models/mail_thread.py')
| -rw-r--r-- | addons/mail/models/mail_thread.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index 24adb15b450..802fef140ae 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -516,8 +516,8 @@ class MailThread(models.AbstractModel): fnames = self._get_tracked_fields().intersection(fields) if not fnames: return - func = self.browse()._finalize_tracking - [initial_values] = self.env.cr.precommit.add(func, dict) + self.env.cr.precommit.add(self._finalize_tracking) + initial_values = self.env.cr.precommit.data.setdefault(f'mail.tracking.{self._name}', {}) for record in self: if not record.id: continue @@ -530,16 +530,17 @@ class MailThread(models.AbstractModel): """ Prevent any tracking of fields on ``self``. """ if not self._get_tracked_fields(): return - func = self.browse()._finalize_tracking - [initial_values] = self.env.cr.precommit.add(func, dict) + self.env.cr.precommit.add(self._finalize_tracking) + initial_values = self.env.cr.precommit.data.setdefault(f'mail.tracking.{self._name}', {}) # disable tracking by setting initial values to None for id_ in self.ids: initial_values[id_] = None - def _finalize_tracking(self, initial_values): + def _finalize_tracking(self): """ Generate the tracking messages for the records that have been prepared with ``_prepare_tracking``. """ + initial_values = self.env.cr.precommit.data.pop(f'mail.tracking.{self._name}', {}) ids = [id_ for id_, vals in initial_values.items() if vals] if not ids: return |
