From 445c1aa412c64ae81ad4fab900494420dff9b0cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 6 Mar 2013 17:28:11 +0100 Subject: [PATCH 1/5] [FIX] mail: added wrapper because of changes introduced in the API recently. bzr revid: tde@openerp.com-20130306162811-t4505m08nep2jlz4 --- addons/mail/mail_thread.py | 20 +++++++++++++++++++- addons/mail/res_users.py | 7 +++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index a456e82d466..8a169e6f27c 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -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 = set(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 |= 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,13 @@ class mail_thread(osv.AbstractModel): self.message_subscribe(cr, uid, [thread_id], [message.author_id.id], context=context) return msg_id + 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_suibtype=content_subtype, + context=context, **kwargs) + #------------------------------------------------------ # Followers API #------------------------------------------------------ diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index 2eff9e43314..2cd1b8f072c 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -120,6 +120,13 @@ class res_users(osv.Model): partner_id = self._message_post_get_pid(cr, uid, thread_id, context=context) return self.pool.get('res.partner').message_post(cr, uid, partner_id, context=context, **kwargs) + 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_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None): for id in ids: partner_id = self.browse(cr, SUPERUSER_ID, id).partner_id.id From e57ffc48363263f1169a9ecc4171818eb8526f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 7 Mar 2013 08:52:16 +0100 Subject: [PATCH 2/5] [FIX] mail: added wrapper for message_Create_patners_from_emails in mail_thread and res_users; cleaned message_post signature to match the pre-merge signature. Also fixed a wrong argument name in message_post_user_api. bzr revid: tde@openerp.com-20130307075216-kk0m304405ohm7ua --- addons/mail/mail_thread.py | 16 ++++++++++++---- addons/mail/res_users.py | 15 +++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 8a169e6f27c..301ce4c54cb 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. @@ -1030,11 +1030,19 @@ 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_suibtype=content_subtype, + attachment_ids=attachment_ids, content_subtype=content_subtype, context=context, **kwargs) #------------------------------------------------------ diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index 2cd1b8f072c..ed254500f5b 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -148,6 +148,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 From 4d4935d551a65bf81746530aec7a3a26437a6536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 7 Mar 2013 09:06:16 +0100 Subject: [PATCH 3/5] [REM] removed duplicate method. bzr revid: tde@openerp.com-20130307080616-63nuzq15jg0ijkr6 --- addons/mail/res_users.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index ed254500f5b..f7c91939b98 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -120,13 +120,6 @@ class res_users(osv.Model): partner_id = self._message_post_get_pid(cr, uid, thread_id, context=context) return self.pool.get('res.partner').message_post(cr, uid, partner_id, context=context, **kwargs) - 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_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None): for id in ids: partner_id = self.browse(cr, SUPERUSER_ID, id).partner_id.id From 000042ac68449af069964eef2505490ab7ae9938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 7 Mar 2013 10:31:15 +0100 Subject: [PATCH 4/5] [FIX] mail_thread: fixed set that should not be a set. bzr revid: tde@openerp.com-20130307093115-9jmflmnf420iiz21 --- addons/mail/mail_thread.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 301ce4c54cb..c8a863d9e44 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -933,7 +933,7 @@ class mail_thread(osv.AbstractModel): # 2: Private message: add recipients (recipients and author of parent message) # + legacy-code management (! we manage only 4 and 6 commands) partner_ids = set() - kwargs_partner_ids = set(kwargs.pop('partner_ids', [])) + 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]) From 5e59420989e99072d195b0be38b114e3a27ec27e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 7 Mar 2013 10:34:14 +0100 Subject: [PATCH 5/5] [FIX] mail_thread: fixed a list that should be a set. This has nothing to do with the previous commit. Seriously. bzr revid: tde@openerp.com-20130307093414-wcdakf017sskj35l --- addons/mail/mail_thread.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index c8a863d9e44..af21109b89e 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -938,7 +938,7 @@ class mail_thread(osv.AbstractModel): 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 |= partner_id[2] + partner_ids |= set(partner_id[2]) elif isinstance(partner_id, (int, long)): partner_ids.add(partner_id) else: