From 75b716bd9f4945396f59a202a74a14432ff6a2d2 Mon Sep 17 00:00:00 2001 From: "Foram Katharotiya (OpenERP)" Date: Wed, 12 Dec 2012 14:31:47 +0530 Subject: [PATCH] [IMP] display messages according to select subtype bzr revid: fka@tinyerp.com-20121212090147-hwu4jc8pfp5xa49g --- addons/mail/mail_message.py | 42 ++++++++++++++++++---------------- addons/mail/tests/test_mail.py | 2 ++ 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 069e0118ec4..9291ed4fbd4 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -505,26 +505,28 @@ class mail_message(osv.Model): # fetch parent if threaded, sort messages for message in self.browse(cr, uid, ids, context=context): - message_id = message.id - if message_id in message_tree: - continue - message_tree[message_id] = message - - # find parent_id - if thread_level == 0: - tree_parent_id = parent_id - else: - tree_parent_id = message_id - parent = message - while parent.parent_id and parent.parent_id.id != parent_id: - parent = parent.parent_id - tree_parent_id = parent.id - if not parent.id in message_tree: - message_tree[parent.id] = parent - # newest messages first - parent_tree.setdefault(tree_parent_id, []) - if tree_parent_id != message_id: - parent_tree[tree_parent_id].append(self._message_read_dict(cr, uid, message_tree[message_id], parent_id=tree_parent_id, context=context)) + notified_partner_id = [user.id for user in message.notified_partner_ids] + if not parent_id or notified_partner_id: + message_id = message.id + if message_id in message_tree: + continue + message_tree[message_id] = message + + # find parent_id + if thread_level == 0: + tree_parent_id = parent_id + else: + tree_parent_id = message_id + parent = message + while parent.parent_id and parent.parent_id.id != parent_id: + parent = parent.parent_id + tree_parent_id = parent.id + if not parent.id in message_tree: + message_tree[parent.id] = parent + # newest messages first + parent_tree.setdefault(tree_parent_id, []) + if tree_parent_id != message_id: + parent_tree[tree_parent_id].append(self._message_read_dict(cr, uid, message_tree[message_id], parent_id=tree_parent_id, context=context)) if thread_level: for key, message_id_list in parent_tree.iteritems(): diff --git a/addons/mail/tests/test_mail.py b/addons/mail/tests/test_mail.py index 6db6a8d6c71..bb116807e29 100644 --- a/addons/mail/tests/test_mail.py +++ b/addons/mail/tests/test_mail.py @@ -555,6 +555,8 @@ class test_mail(test_mail_mockup.TestMailMockups): msg_id8 = self.group_pigs.message_post(body='2-1-1', subtype='mt_comment', parent_id=msg_id4) msg_id9 = self.group_pigs.message_post(body='1-1-1', subtype='mt_comment', parent_id=msg_id3) msg_id10 = self.group_pigs.message_post(body='2-1-1', subtype='mt_comment', parent_id=msg_id4) + child_msg_id = [msg_id3, msg_id4,msg_id5,msg_id6,msg_id7,msg_id8,msg_id9,msg_id10] + self.mail_message.write(cr, uid, child_msg_id, {'notified_partner_ids': [(6, 0, [user_admin.id])]}) msg_ids = [msg_id10, msg_id9, msg_id8, msg_id7, msg_id6, msg_id5, msg_id4, msg_id3, msg_id2, msg_id1, msg_id0] ordered_msg_ids = [msg_id2, msg_id4, msg_id6, msg_id8, msg_id10, msg_id1, msg_id3, msg_id5, msg_id7, msg_id9, msg_id0]