summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter
diff options
context:
space:
mode:
authorBruno Wagner <bwagner@riseup.net>2016-01-08 17:34:20 -0200
committerBruno Wagner <bwagner@riseup.net>2016-01-08 17:34:20 -0200
commitdb38cc2919fbe5f52d9eb73f45fd89a84da89682 (patch)
treecccaad5e84f270961587599d3fe696b2db740072 /service/pixelated/adapter
parent0a29be8e41aa81fd1552b1122bc4ab2a3f2357cf (diff)
Removed search engine from constant in Indexer
The search engine was being passed as a constant to the Mail Indexer, that constrained the user agent to one user (because the search engine is user specific). I added the search engine as a parameter on the Mail Indexer initialization so that we can have the Indexer working for each user.
Diffstat (limited to 'service/pixelated/adapter')
-rw-r--r--service/pixelated/adapter/listeners/mailbox_indexer_listener.py16
1 files changed, 7 insertions, 9 deletions
diff --git a/service/pixelated/adapter/listeners/mailbox_indexer_listener.py b/service/pixelated/adapter/listeners/mailbox_indexer_listener.py
index 8896d742..e2f46769 100644
--- a/service/pixelated/adapter/listeners/mailbox_indexer_listener.py
+++ b/service/pixelated/adapter/listeners/mailbox_indexer_listener.py
@@ -23,32 +23,31 @@ logger = logging.getLogger(__name__)
class MailboxIndexerListener(object):
""" Listens for new mails, keeping the index updated """
- SEARCH_ENGINE = None
-
@classmethod
@defer.inlineCallbacks
- def listen(cls, account, mailbox_name, mail_store):
- listener = MailboxIndexerListener(mailbox_name, mail_store)
+ def listen(cls, account, mailbox_name, mail_store, search_engine):
+ listener = MailboxIndexerListener(mailbox_name, mail_store, search_engine)
if listener not in (yield account.getMailbox(mailbox_name)).listeners:
mbx = yield account.getMailbox(mailbox_name)
mbx.addListener(listener)
defer.returnValue(listener)
- def __init__(self, mailbox_name, mail_store):
+ def __init__(self, mailbox_name, mail_store, search_engine):
self.mailbox_name = mailbox_name
self.mail_store = mail_store
+ self.search_engine = search_engine
@defer.inlineCallbacks
def newMessages(self, exists, recent):
try:
- indexed_idents = set(self.SEARCH_ENGINE.search('tag:' + self.mailbox_name.lower(), all_mails=True))
+ indexed_idents = set(self.search_engine.search('tag:' + self.mailbox_name.lower(), all_mails=True))
soledad_idents = yield self.mail_store.get_mailbox_mail_ids(self.mailbox_name)
soledad_idents = set(soledad_idents)
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)))
except Exception, e: # this is a event handler, don't let exceptions escape
logger.error(e)
@@ -64,7 +63,6 @@ class MailboxIndexerListener(object):
@defer.inlineCallbacks
def listen_all_mailboxes(account, search_engine, mail_store):
- MailboxIndexerListener.SEARCH_ENGINE = search_engine
mailboxes = yield account.account.list_all_mailbox_names()
for mailbox_name in mailboxes:
- yield MailboxIndexerListener.listen(account, mailbox_name, mail_store)
+ yield MailboxIndexerListener.listen(account, mailbox_name, mail_store, search_engine)