From 5b4d247674a00ede5ef956ec6cc6d9028e47c3fd Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sun, 17 Jul 2016 00:32:30 +0200 Subject: [PATCH] [IMP] mail: when replying to an internal message, don't send to followers When an incoming email is a reply to an internal comment (private msg), log a note, instead of sending an new message. --- addons/mail/models/mail_thread.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index 3b49c50235b..b03995d2291 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -1169,7 +1169,8 @@ class MailThread(models.AbstractModel): Model = self.env['mail.thread'] if not hasattr(Model, 'message_post'): Model = self.env['mail.thread'].with_context(thread_model=model) - new_msg = Model.browse(thread_id).message_post(subtype='mail.mt_comment', **message_dict) + internal = message_dict.pop('internal', False) + new_msg = Model.browse(thread_id).message_post(subtype=internal and 'mail.mt_note' or 'mail.mt_comment', **message_dict) if partner_ids: # postponed after message_post, because this is an external message and we don't want to create @@ -1473,12 +1474,14 @@ class MailThread(models.AbstractModel): parent_ids = self.env['mail.message'].search([('message_id', '=', decode(message['In-Reply-To'].strip()))], limit=1) if parent_ids: msg_dict['parent_id'] = parent_ids.id + msg_dict['internal'] = parent_ids.subtype_id and parent_ids.subtype_id.internal or False if message.get('References') and 'parent_id' not in msg_dict: msg_list = mail_header_msgid_re.findall(decode(message['References'])) parent_ids = self.env['mail.message'].search([('message_id', 'in', [x.strip() for x in msg_list])], limit=1) if parent_ids: msg_dict['parent_id'] = parent_ids.id + msg_dict['internal'] = parent_ids.subtype_id and parent_ids.subtype_id.internal or False msg_dict['body'], msg_dict['attachments'] = self._message_extract_payload(message, save_original=save_original) return msg_dict