mirror of https://github.com/OCA/social.git
[IMP] mail_tracking: Ignore catchall
parent
d59b7eabc9
commit
29b6ee1e1e
|
@ -10,3 +10,4 @@ from . import res_partner
|
||||||
from . import mail_thread
|
from . import mail_thread
|
||||||
from . import mail_resend_message
|
from . import mail_resend_message
|
||||||
from . import mail_alias
|
from . import mail_alias
|
||||||
|
from . import ir_config_parameter
|
||||||
|
|
|
@ -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
|
|
@ -10,9 +10,15 @@ class MailAlias(models.Model):
|
||||||
@api.model
|
@api.model
|
||||||
@tools.ormcache()
|
@tools.ormcache()
|
||||||
def get_aliases(self):
|
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),
|
('alias_name', '!=', False),
|
||||||
], ['display_name']))
|
], ['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
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
|
|
|
@ -179,7 +179,7 @@ class TestMailTracking(TransactionCase):
|
||||||
email[1] for email in recipients[self.recipient.id]
|
email[1] for email in recipients[self.recipient.id]
|
||||||
}
|
}
|
||||||
self.assertIn('unnamed@test.com', suggested_mails)
|
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
|
# Repeated Cc recipients
|
||||||
message = self.env['mail.message'].create({
|
message = self.env['mail.message'].create({
|
||||||
'subject': 'Message test',
|
'subject': 'Message test',
|
||||||
|
@ -195,12 +195,12 @@ class TestMailTracking(TransactionCase):
|
||||||
})
|
})
|
||||||
message._notify(message, {}, force_send=True)
|
message._notify(message, {}, force_send=True)
|
||||||
recipients = self.recipient.message_get_suggested_recipients()
|
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)
|
self._check_partner_trackings_cc(message)
|
||||||
|
|
||||||
def _check_partner_trackings_to(self, message):
|
def _check_partner_trackings_to(self, message):
|
||||||
message_dict = message.message_format()[0]
|
message_dict = message.message_format()[0]
|
||||||
self.assertEqual(len(message_dict['partner_trackings']), 3)
|
self.assertEqual(len(message_dict['partner_trackings']), 4)
|
||||||
# mail cc
|
# mail cc
|
||||||
foundPartner = False
|
foundPartner = False
|
||||||
foundNoPartner = False
|
foundNoPartner = False
|
||||||
|
@ -241,16 +241,18 @@ class TestMailTracking(TransactionCase):
|
||||||
'res_id': self.recipient.id,
|
'res_id': self.recipient.id,
|
||||||
'partner_ids': [(4, self.recipient.id)],
|
'partner_ids': [(4, self.recipient.id)],
|
||||||
'email_to': 'Dominique Pinon <support+unnamed@test.com>'
|
'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>',
|
'body': '<p>This is another test message</p>',
|
||||||
})
|
})
|
||||||
message._notify(message, {}, force_send=True)
|
message._notify(message, {}, force_send=True)
|
||||||
recipients = self.recipient.message_get_suggested_recipients()
|
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)
|
self._check_partner_trackings_to(message)
|
||||||
# Catchall + Alias
|
# Catchall + Alias
|
||||||
self.env['ir.config_parameter'].set_param(
|
IrConfigParamObj = self.env["ir.config_parameter"].sudo()
|
||||||
'mail.catchall.domain', 'test.com')
|
IrConfigParamObj.set_param("mail.catchall.alias", "TheCatchall")
|
||||||
|
IrConfigParamObj.set_param('mail.catchall.domain', 'test.com')
|
||||||
self.env['mail.alias'].create({
|
self.env['mail.alias'].create({
|
||||||
'alias_model_id': self.env['ir.model']._get('res.partner').id,
|
'alias_model_id': self.env['ir.model']._get('res.partner').id,
|
||||||
'alias_name': 'support+unnamed',
|
'alias_name': 'support+unnamed',
|
||||||
|
|
Loading…
Reference in New Issue