From 8738140374a21e18a6439395b730848781e466d5 Mon Sep 17 00:00:00 2001 From: Hugo Adan Date: Tue, 23 Oct 2018 17:43:27 +0000 Subject: [PATCH] [Add] mail_track_diff_only --- mail_track_diff_only/README.rst | 0 mail_track_diff_only/__init__.py | 1 + mail_track_diff_only/__manifest__.py | 14 +++++++++ mail_track_diff_only/models/__init__.py | 1 + mail_track_diff_only/models/mail_thread.py | 33 ++++++++++++++++++++ mail_track_diff_only/readme/CONTRIBUTORS.rst | 2 ++ mail_track_diff_only/readme/DESCRIPTION.rst | 2 ++ mail_track_diff_only/readme/INSTALL.rst | 0 mail_track_diff_only/readme/USAGE.rst | 0 9 files changed, 53 insertions(+) create mode 100644 mail_track_diff_only/README.rst create mode 100644 mail_track_diff_only/__init__.py create mode 100644 mail_track_diff_only/__manifest__.py create mode 100644 mail_track_diff_only/models/__init__.py create mode 100644 mail_track_diff_only/models/mail_thread.py create mode 100644 mail_track_diff_only/readme/CONTRIBUTORS.rst create mode 100644 mail_track_diff_only/readme/DESCRIPTION.rst create mode 100644 mail_track_diff_only/readme/INSTALL.rst create mode 100644 mail_track_diff_only/readme/USAGE.rst diff --git a/mail_track_diff_only/README.rst b/mail_track_diff_only/README.rst new file mode 100644 index 00000000..e69de29b diff --git a/mail_track_diff_only/__init__.py b/mail_track_diff_only/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/mail_track_diff_only/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/mail_track_diff_only/__manifest__.py b/mail_track_diff_only/__manifest__.py new file mode 100644 index 00000000..165da4ae --- /dev/null +++ b/mail_track_diff_only/__manifest__.py @@ -0,0 +1,14 @@ +{ + "name": "Mail track diff only", + "version": "12.0.1.0.0", + "author": "Vauxoo, Odoo Community Association (OCA)", + "category": "Discuss", + "website": "http://www.vauxoo.com/", + "license": "AGPL-3", + "depends": [ + "mail", + ], + "demo": [], + "data": [], + "installable": True, +} diff --git a/mail_track_diff_only/models/__init__.py b/mail_track_diff_only/models/__init__.py new file mode 100644 index 00000000..b70a9f2d --- /dev/null +++ b/mail_track_diff_only/models/__init__.py @@ -0,0 +1 @@ +from . import mail_thread diff --git a/mail_track_diff_only/models/mail_thread.py b/mail_track_diff_only/models/mail_thread.py new file mode 100644 index 00000000..f74b529f --- /dev/null +++ b/mail_track_diff_only/models/mail_thread.py @@ -0,0 +1,33 @@ +from odoo import models, api + + +class MailThread(models.AbstractModel): + _inherit = 'mail.thread' + + @api.multi + def _message_track(self, tracked_fields, initial): + """For a given record, fields to check (column name, column info) + and initial values, return a structure that is a tuple containing : + + - a set of updated column names + - a list of changes (old value, new value, column name, column info) + """ + changes = super(MailThread, self)._message_track( + tracked_fields, initial)[0] + tracking_value_ids = [] + track_obj = self.env['mail.tracking.value'] + + for col_name, col_info in tracked_fields.items(): + initial_value = initial[col_name] + new_value = getattr(self, col_name) + + if new_value != initial_value and (new_value or initial_value): + track_sequence = getattr( + self._fields[col_name], 'track_sequence', 100) + tracking = track_obj.create_tracking_values( + initial_value, new_value, col_name, + col_info, track_sequence) + if tracking: + tracking_value_ids.append([0, 0, tracking]) + + return changes, tracking_value_ids diff --git a/mail_track_diff_only/readme/CONTRIBUTORS.rst b/mail_track_diff_only/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..126362f1 --- /dev/null +++ b/mail_track_diff_only/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* José Manuel Robles +* Hugo Adan diff --git a/mail_track_diff_only/readme/DESCRIPTION.rst b/mail_track_diff_only/readme/DESCRIPTION.rst new file mode 100644 index 00000000..8027d067 --- /dev/null +++ b/mail_track_diff_only/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module shows only the values changed of an object on email, instead of all +tracked values, even if it has track_visibility set as always. diff --git a/mail_track_diff_only/readme/INSTALL.rst b/mail_track_diff_only/readme/INSTALL.rst new file mode 100644 index 00000000..e69de29b diff --git a/mail_track_diff_only/readme/USAGE.rst b/mail_track_diff_only/readme/USAGE.rst new file mode 100644 index 00000000..e69de29b