From b967397c20e216b3e2d34926765ee5c6e5fcb8c3 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Mon, 23 Feb 2015 16:50:10 -0300 Subject: for #174, mailer daemon is now filtered from suggestions --- service/pixelated/adapter/model/mail.py | 4 +++- service/pixelated/adapter/search/__init__.py | 3 ++- service/test/integration/test_contacts.py | 1 + service/test/unit/adapter/test_mail.py | 3 ++- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/service/pixelated/adapter/model/mail.py b/service/pixelated/adapter/model/mail.py index 3ea7c95a..96f2c81c 100644 --- a/service/pixelated/adapter/model/mail.py +++ b/service/pixelated/adapter/model/mail.py @@ -384,7 +384,9 @@ class PixelatedMail(Mail): def bounced(self): content_type = self.hdoc.content["headers"].get("Content-Type", '') if re.compile('delivery-status').search(content_type): - return self._extract_bounced_address(self.hdoc.content) + bounce_recipient = self._extract_bounced_address(self.hdoc.content) + bounce_daemon = self.headers["From"] + return [bounce_recipient, bounce_daemon] if bounce_recipient else False return False diff --git a/service/pixelated/adapter/search/__init__.py b/service/pixelated/adapter/search/__init__.py index e9301278..0b1a1034 100644 --- a/service/pixelated/adapter/search/__init__.py +++ b/service/pixelated/adapter/search/__init__.py @@ -124,6 +124,7 @@ class SearchEngine(object): header = mdict['header'] tags = mdict.get('tags', []) tags.append(mail.mailbox_name.lower()) + bounced = mail.bounced if mail.bounced else [''] index_data = { 'sender': unicode(header.get('from', '')), 'subject': unicode(header.get('subject', '')), @@ -132,7 +133,7 @@ class SearchEngine(object): 'cc': u','.join(header.get('cc', [''])), 'bcc': u','.join(header.get('bcc', [''])), 'tag': u','.join(unique(tags)), - 'bounced': unicode(mail.bounced), + 'bounced': u','.join(bounced), 'body': unicode(mdict['textPlainBody']), 'ident': unicode(mdict['ident']), 'flags': unicode(','.join(unique(mail.flags))), diff --git a/service/test/integration/test_contacts.py b/service/test/integration/test_contacts.py index d96abd14..3a510346 100644 --- a/service/test/integration/test_contacts.py +++ b/service/test/integration/test_contacts.py @@ -100,6 +100,7 @@ class ContactsTest(SoledadTestBase): def _assert(contacts): self.assertNotIn('this_mail_was_bounced@domain.com', contacts) + self.assertNotIn("MAILER-DAEMON@domain.org (Mail Delivery System)", contacts) self.assertIn('this_mail_was_not@bounced.com', contacts) d.addCallback(_assert) return d diff --git a/service/test/unit/adapter/test_mail.py b/service/test/unit/adapter/test_mail.py index 4bf05d3f..54c421c7 100644 --- a/service/test/unit/adapter/test_mail.py +++ b/service/test/unit/adapter/test_mail.py @@ -224,7 +224,8 @@ class TestPixelatedMail(unittest.TestCase): not_bounced_mail = PixelatedMail.from_soledad(*not_bounced_leap_mail, soledad_querier=self.querier) self.assertTrue(bounced_mail.bounced) - self.assertEquals('this_mail_was_bounced@domain.com', bounced_mail.bounced) + self.assertIn('this_mail_was_bounced@domain.com', bounced_mail.bounced) + self.assertIn("MAILER-DAEMON@domain.org (Mail Delivery System)", bounced_mail.bounced) self.assertFalse(not_bounced_mail.bounced) def test_ignore_transient_failures(self): -- cgit v1.2.3