# -*- coding: utf-8 -*- # Copyright 2015 Lorenzo Battistini # Copyright 2017 Eficent # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from openerp import api, models class MailThread(models.AbstractModel): _inherit = 'mail.thread' @api.model def message_route_verify( self, message, message_dict, route, update_author=True, assert_model=True, create_fallback=True, allow_private=False): res = () try: res = super(MailThread, self).message_route_verify( message, message_dict, route, update_author=update_author, assert_model=assert_model, create_fallback=create_fallback, allow_private=allow_private) except ValueError as ve: fetchmail_server_id = self.env.context.get('fetchmail_server_id') if not fetchmail_server_id: raise ve fetchmail_server = self.pool['fetchmail.server'].browse( fetchmail_server_id) if not fetchmail_server.error_notice_template_id: raise ve self.env.context['sender_message'] = message self.env.context['route_exception'] = ve self.env['mail.template'].send_mail( fetchmail_server.error_notice_template_id.id, fetchmail_server.id) self.env.context['error_notice_sent'] = True return res @api.model def message_route( self, message, message_dict, model=None, thread_id=None, custom_values=None): res = [] try: res = super(MailThread, self).message_route( message, message_dict, model=model, thread_id=thread_id, custom_values=custom_values) except ValueError as ve: if self.env.context.get('error_notice_sent'): # avoid raising exception and setting mail message UNSEEN return [] else: raise ve return res