[IMP] display messages according to select subtype
authorForam Katharotiya (OpenERP) <fka@tinyerp.com>
Wed, 12 Dec 2012 09:01:47 +0000 (14:31 +0530)
committerForam Katharotiya (OpenERP) <fka@tinyerp.com>
Wed, 12 Dec 2012 09:01:47 +0000 (14:31 +0530)
bzr revid: fka@tinyerp.com-20121212090147-hwu4jc8pfp5xa49g

addons/mail/mail_message.py
addons/mail/tests/test_mail.py

index 069e011..9291ed4 100644 (file)
@@ -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():
index 6db6a8d..bb11680 100644 (file)
@@ -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]