From 935e4f6a252ecd87d660d8433aa88fee41839fff Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Tue, 16 Jan 2018 12:22:33 +0100 Subject: [PATCH] Task: [mail] clean chatter. Remove "always" tracking support Change greay background logic --- addons/im_livechat/static/src/js/im_livechat.js | 1 + addons/mail/models/mail_message.py | 6 ++++-- addons/mail/models/mail_thread.py | 17 ++--------------- addons/mail/static/src/js/chat_manager.js | 1 + addons/mail/static/src/less/thread.less | 2 +- addons/mail/static/src/xml/thread.xml | 2 +- addons/mail/static/tests/chat_window_test.js | 1 + addons/mail/static/tests/chatter_tests.js | 5 +++++ addons/test_mail/tests/test_message_track.py | 12 +++++------- 9 files changed, 21 insertions(+), 26 deletions(-) diff --git a/addons/im_livechat/static/src/js/im_livechat.js b/addons/im_livechat/static/src/js/im_livechat.js index 10cc5610214..75240cc7d31 100644 --- a/addons/im_livechat/static/src/js/im_livechat.js +++ b/addons/im_livechat/static/src/js/im_livechat.js @@ -229,6 +229,7 @@ var LivechatButton = Widget.extend({ date: moment(time.str_to_datetime(data.date)), is_needaction: false, is_note: data.is_note, + is_discussion: data.is_discussion, customer_email_data: [] }; diff --git a/addons/mail/models/mail_message.py b/addons/mail/models/mail_message.py index e674d701f3e..d2727a8b70f 100644 --- a/addons/mail/models/mail_message.py +++ b/addons/mail/models/mail_message.py @@ -404,6 +404,7 @@ class Message(models.Model): 'id': 59, 'subject': False 'is_note': True # only if the subtype is internal + 'is_discussion': False # only if the message is a discussion (subtype == discussion) } """ message_values = self.read([ @@ -417,13 +418,14 @@ class Message(models.Model): message_tree = dict((m.id, m) for m in self.sudo()) self._message_read_dict_postprocess(message_values, message_tree) - # add subtype data (is_note flag, subtype_description). Do it as sudo + # add subtype data (is_note flag, is_discussion flag , subtype_description). Do it as sudo # because portal / public may have to look for internal subtypes subtype_ids = [msg['subtype_id'][0] for msg in message_values if msg['subtype_id']] - subtypes = self.env['mail.message.subtype'].sudo().browse(subtype_ids).read(['internal', 'description']) + subtypes = self.env['mail.message.subtype'].sudo().browse(subtype_ids).read(['internal', 'description','id']) subtypes_dict = dict((subtype['id'], subtype) for subtype in subtypes) for message in message_values: message['is_note'] = message['subtype_id'] and subtypes_dict[message['subtype_id'][0]]['internal'] + message['is_discussion'] = message['subtype_id'] and subtypes_dict[message['subtype_id'][0]]['id'] == self.env['ir.model.data'].xmlid_to_res_id('mail.mt_comment') message['subtype_description'] = message['subtype_id'] and subtypes_dict[message['subtype_id'][0]]['description'] if message['model'] and self.env[message['model']]._original_module: message['module_icon'] = modules.module.get_module_icon(self.env[message['model']]._original_module) diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index bf43e1c8a4d..ae5ae61722f 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -461,8 +461,7 @@ class MailThread(models.AbstractModel): def _get_tracked_fields(self, updated_fields): """ Return a structure of tracked fields for the current model. :param list updated_fields: modified field names - :return dict: a dict mapping field name to description, containing - always tracked fields and modified on_change fields + :return dict: a dict mapping field name to description, containing on_change fields """ tracked_fields = [] for name, field in self._fields.items(): @@ -521,14 +520,11 @@ class MailThread(models.AbstractModel): - a set of updated column names - a list of changes (initial value, new value, column name, column info) """ self.ensure_one() - changes = set() # contains always and onchange tracked fields that changed - displays = set() # contains always tracked field that did not change but displayed for information + changes = set() # contains onchange tracked fields that changed tracking_value_ids = [] - display_values_ids = [] # generate tracked_values data structure: {'col_name': {col_info, new_value, old_value}} for col_name, col_info in tracked_fields.items(): - track_visibility = getattr(self._fields[col_name], 'track_visibility', 'onchange') initial_value = initial[col_name] new_value = getattr(self, col_name) @@ -539,15 +535,6 @@ class MailThread(models.AbstractModel): if col_name in tracked_fields: changes.add(col_name) - # 'always' tracked fields in separate variable; added if other changes - elif new_value == initial_value and track_visibility == 'always' and col_name in tracked_fields: - tracking = self.env['mail.tracking.value'].create_tracking_values(initial_value, initial_value, col_name, col_info) - if tracking: - display_values_ids.append([0, 0, tracking]) - displays.add(col_name) - - if changes and displays: - tracking_value_ids = display_values_ids + tracking_value_ids return changes, tracking_value_ids diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js index 9d1b9cddb70..35d16915341 100644 --- a/addons/mail/static/src/js/chat_manager.js +++ b/addons/mail/static/src/js/chat_manager.js @@ -130,6 +130,7 @@ function make_message (data) { subtype_description: data.subtype_description, is_author: data.author_id && data.author_id[0] === session.partner_id, is_note: data.is_note, + is_discussion: data.is_discussion, is_system_notification: (data.message_type === 'notification' && data.model === 'mail.channel') || data.info === 'transient_message', attachment_ids: data.attachment_ids || [], diff --git a/addons/mail/static/src/less/thread.less b/addons/mail/static/src/less/thread.less index 3683ecd9bbe..c6c5783cc5b 100644 --- a/addons/mail/static/src/less/thread.less +++ b/addons/mail/static/src/less/thread.less @@ -109,7 +109,7 @@ text-align: justify; } - &.o_mail_note { + &.o_mail_not_discussion { background-color: @mail-thread-note; padding-left: @grid-gutter-width*0.3; border-bottom: 1px solid @gray-lighter-dark; diff --git a/addons/mail/static/src/xml/thread.xml b/addons/mail/static/src/xml/thread.xml index 7806029557b..2d5d1ba45b2 100644 --- a/addons/mail/static/src/xml/thread.xml +++ b/addons/mail/static/src/xml/thread.xml @@ -160,7 +160,7 @@ t-att-class="'fa o_thread_message_star o_thread_icon ' + (message.is_starred ? 'fa-star' : 'fa-star-o')" t-att-data-message-id="message.id" title="Mark as Todo"/> -
+

Note by diff --git a/addons/mail/static/tests/chat_window_test.js b/addons/mail/static/tests/chat_window_test.js index ac224a69994..51eb68475ba 100644 --- a/addons/mail/static/tests/chat_window_test.js +++ b/addons/mail/static/tests/chat_window_test.js @@ -27,6 +27,7 @@ QUnit.module('mail', {}, function () { displayed_author: "John Doe", id: 1, is_note: false, + is_discussion: true, is_starred: false, model: 'partner', res_id: 2 diff --git a/addons/mail/static/tests/chatter_tests.js b/addons/mail/static/tests/chatter_tests.js index 9711c4a0c81..5ddd3bee82b 100644 --- a/addons/mail/static/tests/chatter_tests.js +++ b/addons/mail/static/tests/chatter_tests.js @@ -418,6 +418,7 @@ QUnit.test('chatter: post, receive and star messages', function (assert) { displayed_author: "John Doe", id: 1, is_note: false, + is_discussion: true, is_starred: false, model: 'partner', res_id: 2, @@ -467,6 +468,7 @@ QUnit.test('chatter: post, receive and star messages', function (assert) { displayed_author: "Me", id: msg_id, is_note: event.data.message.subtype === 'mail.mt_note', + is_discussion: event.data.message.subtype === 'mail.mt_comment', is_starred: false, model: 'partner', res_id: 2, @@ -615,6 +617,7 @@ QUnit.test('chatter: post a message and switch in edit mode', function (assert) displayed_author: "Me", id: 42, is_note: event.data.message.subtype === 'mail.mt_note', + is_discussion: event.data.message.subtype === 'mail.mt_comment', is_starred: false, model: 'partner', res_id: 2, @@ -686,6 +689,7 @@ QUnit.test('chatter: Attachment viewer', function (assert) { displayed_author: "John Doe", id: 1, is_note: false, + is_discussion: true, is_starred: false, model: 'partner', res_id: 2, @@ -934,6 +938,7 @@ QUnit.test('form activity widget: mark as done and remove', function (assert) { displayed_author: "John Doe", id: 1, is_note: true, + is_discussion: false, }); route = '/web/dataset/call_kw/mail.activity/unlink'; args.method = 'unlink'; diff --git a/addons/test_mail/tests/test_message_track.py b/addons/test_mail/tests/test_message_track.py index ab8da10bd8d..8887698594e 100644 --- a/addons/test_mail/tests/test_message_track.py +++ b/addons/test_mail/tests/test_message_track.py @@ -40,7 +40,7 @@ class TestTracking(common.BaseFunctionalTest, common.MockEmails): self.assertEqual(self.record.message_ids, self.env['mail.message']) def test_message_track_no_subtype(self): - """ Update some tracked fields not linked to some subtype -> message with onchange + always tracked values """ + """ Update some tracked fields not linked to some subtype -> message with onchange """ customer = self.env['res.partner'].create({'name': 'Customer', 'email': 'cust@example.com'}) self.record.write({ 'name': 'Test2', @@ -59,12 +59,11 @@ class TestTracking(common.BaseFunctionalTest, common.MockEmails): # verify tracked value self.assertTracking( self.record.message_ids, - [('email_from', 'char', False, False), # always tracked field - ('customer_id', 'many2one', False, customer) # onchange tracked field + [('customer_id', 'many2one', False, customer) # onchange tracked field ]) def test_message_track_subtype(self): - """ Update some tracked fields linked to some subtype -> message with onchange + always tracked values """ + """ Update some tracked fields linked to some subtype -> message with onchange """ self.record.message_subscribe( partner_ids=[self.user_admin.partner_id.id], subtype_ids=[self.env.ref('test_mail.st_mail_test_full_umbrella_upd').id] @@ -87,12 +86,11 @@ class TestTracking(common.BaseFunctionalTest, common.MockEmails): # verify tracked value self.assertTracking( self.record.message_ids, - [('email_from', 'char', False, 'noone@example.com'), # always tracked field - ('umbrella_id', 'many2one', False, umbrella) # onchange tracked field + [('umbrella_id', 'many2one', False, umbrella) # onchange tracked field ]) def test_message_track_template(self): - """ Update some tracked fields linked to some template -> message with onchange + always tracked values """ + """ Update some tracked fields linked to some template -> message with onchange """ self.record.write({'mail_template': self.env.ref('test_mail.mail_test_full_tracking_tpl').id}) self.assertEqual(self.record.message_ids, self.env['mail.message'])