diff --git a/addons/crm/tests/test_crm_lead_notification.py b/addons/crm/tests/test_crm_lead_notification.py index 35c7648912cf7..b257fc34d884e 100644 --- a/addons/crm/tests/test_crm_lead_notification.py +++ b/addons/crm/tests/test_crm_lead_notification.py @@ -389,11 +389,8 @@ def test_new_lead_from_email_multicompany(self): --000000000000a47519057e029630-- """ - crm_lead0_id = self.env['mail.thread'].message_process('crm.lead', new_message0) - crm_lead1_id = self.env['mail.thread'].message_process('crm.lead', new_message1) - - crm_lead0 = self.env['crm.lead'].browse(crm_lead0_id) - crm_lead1 = self.env['crm.lead'].browse(crm_lead1_id) + crm_lead0 = self.env['mail.thread'].message_process('crm.lead', new_message0) + crm_lead1 = self.env['mail.thread'].message_process('crm.lead', new_message1) self.assertEqual(crm_lead0.team_id, crm_team0) self.assertEqual(crm_lead1.team_id, crm_team1) diff --git a/addons/mail/models/fetchmail.py b/addons/mail/models/fetchmail.py index b30725e918df1..347280119ce2a 100644 --- a/addons/mail/models/fetchmail.py +++ b/addons/mail/models/fetchmail.py @@ -231,11 +231,10 @@ def fetch_mail(self, raise_exception=True): imap_server.select() result, data = imap_server.search(None, '(UNSEEN)') for num in data[0].split(): - res_id = None result, data = imap_server.fetch(num, '(RFC822)') imap_server.store(num, '-FLAGS', '\\Seen') try: - res_id = MailThread.with_context(**additionnal_context).message_process(server.object_id.model, data[0][1], save_original=server.original, strip_attachments=(not server.attach)) + MailThread.with_context(**additionnal_context).message_process(server.object_id.model, data[0][1], save_original=server.original, strip_attachments=(not server.attach)) except Exception: _logger.info('Failed to process mail from %s server %s.', server.server_type, server.name, exc_info=True) failed += 1 @@ -266,9 +265,8 @@ def fetch_mail(self, raise_exception=True): for num in range(1, min(MAX_POP_MESSAGES, num_messages) + 1): (header, messages, octets) = pop_server.retr(num) message = (b'\n').join(messages) - res_id = None try: - res_id = MailThread.with_context(**additionnal_context).message_process(server.object_id.model, message, save_original=server.original, strip_attachments=(not server.attach)) + MailThread.with_context(**additionnal_context).message_process(server.object_id.model, message, save_original=server.original, strip_attachments=(not server.attach)) pop_server.dele(num) except Exception: _logger.info('Failed to process mail from %s server %s.', server.server_type, server.name, exc_info=True) diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index 58fb0a655ee9d..2848287780a83 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -1291,7 +1291,7 @@ def _message_route_process(self, message, message_dict, routes): self = self.with_context(attachments_mime_plainxml=True) # import XML attachments as text # postpone setting message_dict.partner_ids after message_post, to avoid double notifications original_partner_ids = message_dict.pop('partner_ids', []) - thread_id = False + thread = self.browse() for model, thread_id, custom_values, user_id, alias in routes or (): subtype_id = False related_user = self.env['res.users'].browse(user_id) @@ -1361,9 +1361,10 @@ def _message_route_process(self, message, message_dict, routes): # postponed after message_post, because this is an external message and we don't want to create # duplicate emails due to notifications new_msg.write({'partner_ids': original_partner_ids}) - return thread_id + return thread.with_env(self.env) @api.model + @api.returns('mail.thread', lambda value: value.id) def message_process(self, model, message, custom_values=None, save_original=False, strip_attachments=False, thread_id=None): @@ -1424,8 +1425,7 @@ def message_process(self, model, message, custom_values=None, if self._detect_loop_sender(message, msg_dict, routes): return - thread_id = self._message_route_process(message, msg_dict, routes) - return thread_id + return self._message_route_process(message, msg_dict, routes) @api.model def message_new(self, msg_dict, custom_values=None):