[IMP] mail: ancestor_id -> back to parent_id; message_post force the parent to be the oldest ancestor.

bzr revid: tde@openerp.com-20121026080005-ns2vicwdksr515ll
This commit is contained in:
Thibault Delavallée 2012-10-26 10:00:05 +02:00
parent 3e36e6c88f
commit e1bbbad62f
2 changed files with 19 additions and 6 deletions

View File

@ -131,7 +131,8 @@ class mail_notification(osv.Model):
def _notify(self, cr, uid, msg_id, context=None):
""" Send by email the notification depending on the user preferences """
context = context or {}
if context is None:
context = {}
# mail_noemail (do not send email) or no partner_ids: do not send, return
if context.get('mail_noemail'):
return True
@ -142,6 +143,16 @@ class mail_notification(osv.Model):
return True
mail_mail = self.pool.get('mail.mail')
# TMP about thread formation
if msg.parent_id.id:
# 1. fetch all messages that will form the thread as SUPERUSER, filtering will be done after
messages = self.pool.get('mail.message').message_read(cr, SUPERUSER_ID, None, domain=['|', ('id', 'in', [msg.id, msg.parent_id.id]), ('parent_id', '=', msg.parent_id.id)], context=context, limit=5, thread_level=1)
for message in messages:
print message['body'], message['id'], message['parent_id']
# END TMP
# add signature
body_html = msg.body
signature = msg.author_id and msg.author_id.user_ids[0].signature or ''

View File

@ -243,7 +243,7 @@ class mail_message(osv.Model):
'author_id': author_id,
'is_author': is_author,
'partner_ids': partner_ids,
'ancestor_id': False,
'parent_id': False,
'vote_nb': len(message['vote_user_ids']),
'has_voted': has_voted,
'is_private': is_private,
@ -273,12 +273,12 @@ class mail_message(osv.Model):
easily have access to their values, given their ID
:return bool: True
"""
def _get_expandable(domain, message_nb, ancestor_id, id, model):
def _get_expandable(domain, message_nb, parent_id, id, model):
return {
'domain': domain,
'nb_messages': message_nb,
'type': 'expandable',
'ancestor_id': ancestor_id,
'parent_id': parent_id,
'id': id,
# TDE note: why do we need model sometimes, and sometimes not ???
'model': model,
@ -286,6 +286,8 @@ class mail_message(osv.Model):
# all_not_loaded_ids = []
id_list = sorted(read_messages.keys())
if not id_list:
return message_list
# 1. get the expandable for new threads
if thread_level == 0:
@ -402,11 +404,11 @@ class mail_message(osv.Model):
# get the older ancestor the user can read, update its ancestor field
if not thread_level:
message_list[-1]['ancestor_id'] = parent_id
message_list[-1]['parent_id'] = parent_id
continue
parent = self._get_parent(cr, uid, message, context=context)
while parent and parent.get('id') != parent_id:
message_list[-1]['ancestor_id'] = parent.get('id')
message_list[-1]['parent_id'] = parent.get('id')
message = parent
parent = self._get_parent(cr, uid, message, context=context)
# if in thread: add its ancestor to the list of messages