diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index a456e82d466..af21109b89e 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -883,9 +883,9 @@ class mail_thread(osv.AbstractModel): mail_message_obj.write(cr, SUPERUSER_ID, message_ids, {'author_id': ids[0]}, context=context) return result - def message_post(self, cr, uid, thread_id, body='', subject=None, - content_subtype='html', type='notification', subtype=None, - parent_id=False, attachments=None, context=None, **kwargs): + def message_post(self, cr, uid, thread_id, body='', subject=None, type='notification', + subtype=None, parent_id=False, attachments=None, context=None, + content_subtype='html', **kwargs): """ Post a new message in an existing thread, returning the new mail.message ID. @@ -931,7 +931,18 @@ class mail_thread(osv.AbstractModel): body = tools.plaintext2html(body) # 2: Private message: add recipients (recipients and author of parent message) - partner_ids = set(kwargs.pop('partner_ids', [])) + # + legacy-code management (! we manage only 4 and 6 commands) + partner_ids = set() + kwargs_partner_ids = kwargs.pop('partner_ids', []) + for partner_id in kwargs_partner_ids: + if isinstance(partner_id, (list, tuple)) and partner_id[0] == 4 and len(partner_id) == 2: + partner_ids.add(partner_id[1]) + if isinstance(partner_id, (list, tuple)) and partner_id[0] == 6 and len(partner_id) == 3: + partner_ids |= set(partner_id[2]) + elif isinstance(partner_id, (int, long)): + partner_ids.add(partner_id) + else: + pass # we do not manage anything else if parent_id and model == 'mail.thread': parent_message = mail_message.browse(cr, uid, parent_id, context=context) partner_ids |= set([partner.id for partner in parent_message.partner_ids]) @@ -1019,6 +1030,21 @@ class mail_thread(osv.AbstractModel): self.message_subscribe(cr, uid, [thread_id], [message.author_id.id], context=context) return msg_id + #------------------------------------------------------ + # Compatibility methods: do not use + # TDE TODO: remove me in 8.0 + #------------------------------------------------------ + + def message_create_partners_from_emails(self, cr, uid, emails, context=None): + return {'partner_ids': [], 'new_partner_ids': []} + + def message_post_user_api(self, cr, uid, thread_id, body='', parent_id=False, + attachment_ids=None, content_subtype='plaintext', + context=None, **kwargs): + return self.message_post(cr, uid, thread_id, body=body, parent_id=parent_id, + attachment_ids=attachment_ids, content_subtype=content_subtype, + context=context, **kwargs) + #------------------------------------------------------ # Followers API #------------------------------------------------------ diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index 2eff9e43314..f7c91939b98 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -141,6 +141,21 @@ class res_users(osv.Model): partner_ids.append(self.browse(cr, SUPERUSER_ID, id).partner_id.id) return self.pool.get('res.partner').message_get_suggested_recipients(cr, uid, partner_ids, context=context) + #------------------------------------------------------ + # Compatibility methods: do not use + # TDE TODO: remove me in 8.0 + #------------------------------------------------------ + + def message_post_user_api(self, cr, uid, thread_id, context=None, **kwargs): + """ Redirect the posting of message on res.users to the related partner. + This is done because when giving the context of Chatter on the + various mailboxes, we do not have access to the current partner_id. """ + partner_id = self._message_post_get_pid(cr, uid, thread_id, context=context) + return self.pool.get('res.partner').message_post_user_api(cr, uid, partner_id, context=context, **kwargs) + + def message_create_partners_from_emails(self, cr, uid, emails, context=None): + return self.pool.get('res.partner').message_create_partners_from_emails(cr, uid, emails, context=context) + class res_users_mail_group(osv.Model): """ Update of res.users class