[IMP] mail_tracking: Ignore catchall

pull/536/head
Alexandre Díaz 2020-04-16 19:36:32 +02:00
parent d59b7eabc9
commit 29b6ee1e1e
4 changed files with 43 additions and 8 deletions

View File

@ -10,3 +10,4 @@ from . import res_partner
from . import mail_thread
from . import mail_resend_message
from . import mail_alias
from . import ir_config_parameter

View File

@ -0,0 +1,26 @@
# Copyright 2020 Tecnativa - Alexandre Díaz
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, api
class IrConfigParameter(models.Model):
_inherit = 'ir.config_parameter'
@api.model_create_multi
def create(self, vals_list):
res = super().create(vals_list)
self.env['mail.alias'].clear_caches()
return res
@api.multi
def write(self, vals):
res = super().write(vals)
self.env['mail.alias'].clear_caches()
return res
@api.multi
def unlink(self):
res = super().unlink()
self.env['mail.alias'].clear_caches()
return res

View File

@ -10,9 +10,15 @@ class MailAlias(models.Model):
@api.model
@tools.ormcache()
def get_aliases(self):
return set(x['display_name'] for x in self.search_read([
aliases = set(x['display_name'] for x in self.search_read([
('alias_name', '!=', False),
], ['display_name']))
IrConfigParamObj = self.env["ir.config_parameter"].sudo()
catchall = "%s@%s" % (
IrConfigParamObj.get_param("mail.catchall.alias"),
IrConfigParamObj.get_param("mail.catchall.domain"))
aliases.add(catchall)
return aliases
@api.model_create_multi
def create(self, vals_list):

View File

@ -179,7 +179,7 @@ class TestMailTracking(TransactionCase):
email[1] for email in recipients[self.recipient.id]
}
self.assertIn('unnamed@test.com', suggested_mails)
self.assertEqual(len(recipients[self.recipient.id][0]), 3)
self.assertEqual(len(recipients[self.recipient.id]), 3)
# Repeated Cc recipients
message = self.env['mail.message'].create({
'subject': 'Message test',
@ -195,12 +195,12 @@ class TestMailTracking(TransactionCase):
})
message._notify(message, {}, force_send=True)
recipients = self.recipient.message_get_suggested_recipients()
self.assertEqual(len(recipients[self.recipient.id][0]), 3)
self.assertEqual(len(recipients[self.recipient.id]), 3)
self._check_partner_trackings_cc(message)
def _check_partner_trackings_to(self, message):
message_dict = message.message_format()[0]
self.assertEqual(len(message_dict['partner_trackings']), 3)
self.assertEqual(len(message_dict['partner_trackings']), 4)
# mail cc
foundPartner = False
foundNoPartner = False
@ -241,16 +241,18 @@ class TestMailTracking(TransactionCase):
'res_id': self.recipient.id,
'partner_ids': [(4, self.recipient.id)],
'email_to': 'Dominique Pinon <support+unnamed@test.com>'
', sender@example.com, recipient@example.com',
', sender@example.com, recipient@example.com'
', TheCatchall@test.com',
'body': '<p>This is another test message</p>',
})
message._notify(message, {}, force_send=True)
recipients = self.recipient.message_get_suggested_recipients()
self.assertEqual(len(recipients[self.recipient.id][0]), 3)
self.assertEqual(len(recipients[self.recipient.id]), 4)
self._check_partner_trackings_to(message)
# Catchall + Alias
self.env['ir.config_parameter'].set_param(
'mail.catchall.domain', 'test.com')
IrConfigParamObj = self.env["ir.config_parameter"].sudo()
IrConfigParamObj.set_param("mail.catchall.alias", "TheCatchall")
IrConfigParamObj.set_param('mail.catchall.domain', 'test.com')
self.env['mail.alias'].create({
'alias_model_id': self.env['ir.model']._get('res.partner').id,
'alias_name': 'support+unnamed',