diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 5054bf89b8c..b70fc6078cc 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -961,7 +961,7 @@ class mail_thread(osv.AbstractModel): # 3. Post message return self.message_post(cr, uid, thread_id=thread_id, body=body, type=msg_type, subtype=msg_subtype, parent_id=parent_id, - attachment_ids=attachment_ids, partner_ids=partner_ids, context=context, **kwargs) + attachment_ids=attachment_ids, partner_ids=list(partner_ids), context=context, **kwargs) #------------------------------------------------------ # Followers API diff --git a/addons/mail/res_partner.py b/addons/mail/res_partner.py index cfcb1106afc..77f680bcab2 100644 --- a/addons/mail/res_partner.py +++ b/addons/mail/res_partner.py @@ -51,9 +51,9 @@ class res_partner_mail(osv.Model): """ if isinstance(thread_id, (list, tuple)): thread_id = thread_id[0] - if type == 'email': + if kwargs.get('type') == 'email': partner_ids = kwargs.get('partner_ids', []) - if thread_id not in partner_ids: + if thread_id not in [command[1] for command in partner_ids]: partner_ids.append((4, thread_id)) kwargs['partner_ids'] = partner_ids thread_id = False diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index 160335fba2a..3f33f1dbca5 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -122,7 +122,7 @@ class res_users(osv.Model): context['thread_model'] = 'res.partner' if isinstance(thread_id, (list, tuple)): thread_id = thread_id[0] - return self.browse(cr, uid, thread_id).partner_id.id + return self.browse(cr, SUPERUSER_ID, thread_id).partner_id.id 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. @@ -139,9 +139,16 @@ class res_users(osv.Model): return self.pool.get('res.partner').message_post(cr, uid, partner_id, context=context, **kwargs) def message_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None): - partner_id = self.browse(cr, uid, ids)[0].partner_id.id - return self.pool.get('res.partner').message_update(cr, uid, [partner_id], msg_dict, - update_vals=update_vals, context=context) + for id in ids: + partner_id = self.browse(cr, SUPERUSER_ID, id).partner_id.id + self.pool.get('res.partner').message_update(cr, uid, [partner_id], msg_dict, update_vals=update_vals, context=context) + return True + + def message_subscribe(self, cr, uid, ids, partner_ids, subtype_ids=None, context=None): + for id in ids: + partner_id = self.browse(cr, SUPERUSER_ID, id).partner_id.id + self.pool.get('res.partner').message_subscribe(cr, uid, [partner_id], partner_ids, subtype_ids=subtype_ids, context=context) + return True class res_users_mail_group(osv.Model):