From b77b15c76d48d4fd3f5d9bb856801cb810a659b2 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Mon, 1 Feb 2016 17:30:26 +0100 Subject: Don't load attachments when just listing mails --- service/pixelated/adapter/listeners/mailbox_indexer_listener.py | 2 +- service/pixelated/adapter/mailstore/leap_mailstore.py | 6 +++--- service/pixelated/adapter/mailstore/mailstore.py | 2 +- service/test/unit/adapter/test_mailbox_indexer_listener.py | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/service/pixelated/adapter/listeners/mailbox_indexer_listener.py b/service/pixelated/adapter/listeners/mailbox_indexer_listener.py index e2f46769..74b4f5af 100644 --- a/service/pixelated/adapter/listeners/mailbox_indexer_listener.py +++ b/service/pixelated/adapter/listeners/mailbox_indexer_listener.py @@ -47,7 +47,7 @@ class MailboxIndexerListener(object): missing_idents = soledad_idents.difference(indexed_idents) - self.search_engine.index_mails((yield self.mail_store.get_mails(missing_idents))) + self.search_engine.index_mails((yield self.mail_store.get_mails(missing_idents, include_body=True))) except Exception, e: # this is a event handler, don't let exceptions escape logger.error(e) diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py index 9b62b3ba..e517ec4c 100644 --- a/service/pixelated/adapter/mailstore/leap_mailstore.py +++ b/service/pixelated/adapter/mailstore/leap_mailstore.py @@ -205,10 +205,10 @@ class LeapMailStore(MailStore): defer.returnValue(leap_mail) @defer.inlineCallbacks - def get_mails(self, mail_ids, gracefully_ignore_errors=False): + def get_mails(self, mail_ids, gracefully_ignore_errors=False, include_body=False): deferreds = [] for mail_id in mail_ids: - deferreds.append(self.get_mail(mail_id, include_body=True)) + deferreds.append(self.get_mail(mail_id, include_body=include_body)) if gracefully_ignore_errors: results = yield DeferredList(deferreds, consumeErrors=True) @@ -230,7 +230,7 @@ class LeapMailStore(MailStore): mail_ids = map(lambda doc: doc.doc_id, mdocs) - mails = yield self.get_mails(mail_ids, gracefully_ignore_errors=gracefully_ignore_errors) + mails = yield self.get_mails(mail_ids, gracefully_ignore_errors=gracefully_ignore_errors, include_body=True) defer.returnValue(mails) @defer.inlineCallbacks diff --git a/service/pixelated/adapter/mailstore/mailstore.py b/service/pixelated/adapter/mailstore/mailstore.py index 60716dfe..fbd7fc9e 100644 --- a/service/pixelated/adapter/mailstore/mailstore.py +++ b/service/pixelated/adapter/mailstore/mailstore.py @@ -22,7 +22,7 @@ class MailStore(object): def get_mail_attachment(self, attachment_id): pass - def get_mails(self, mail_ids): + def get_mails(self, mail_ids, gracefully_ignore_errors=False, include_body=False): pass def all_mails(self): diff --git a/service/test/unit/adapter/test_mailbox_indexer_listener.py b/service/test/unit/adapter/test_mailbox_indexer_listener.py index 9d5f4c30..c88ba035 100644 --- a/service/test/unit/adapter/test_mailbox_indexer_listener.py +++ b/service/test/unit/adapter/test_mailbox_indexer_listener.py @@ -42,17 +42,17 @@ class MailboxListenerTest(unittest.TestCase): self.assertIn(MailboxIndexerListener('INBOX', self.mail_store, mock()), mailbox.listeners) def test_reindex_missing_idents(self): + mail = mock() search_engine = mock() when(search_engine).search('tag:inbox', all_mails=True).thenReturn(['ident1', 'ident2']) listener = MailboxIndexerListener('INBOX', self.mail_store, search_engine) when(self.mail_store).get_mailbox_mail_ids('INBOX').thenReturn({'ident1', 'ident2', 'missing_ident'}) - self.mail_store.used_arguments = [] - self.mail_store.get_mails = lambda x: self.mail_store.used_arguments.append(x) + when(self.mail_store).get_mails({'missing_ident'}, include_body=True).thenReturn([mail]) listener.newMessages(10, 5) - verify(self.mail_store, times=1).get_mails('INBOX') - self.assertIn({'missing_ident'}, self.mail_store.used_arguments) + verify(self.mail_store, times=1).get_mails({'missing_ident'}, include_body=True) + verify(search_engine).index_mails([mail]) @defer.inlineCallbacks def test_catches_exceptions_to_not_break_other_listeners(self): -- cgit v1.2.3