summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter/services
diff options
context:
space:
mode:
authorVictor Shyba <victor.shyba@gmail.com>2015-08-25 18:38:33 -0300
committerVictor Shyba <victor.shyba@gmail.com>2015-08-25 18:38:33 -0300
commit975c5d27d2c8571119ec872c767211d16f4f36ff (patch)
tree910a669ce39cb52cd10bc0cece7d73ecff26f2fb /service/pixelated/adapter/services
parent7c385309dfe9fcfbbad012d46f44e0b19aee82b1 (diff)
[refactor] goodbye mailboxes.py and mailbox.py
All responsabilities are now provided by mail_store. -- Issue #440
Diffstat (limited to 'service/pixelated/adapter/services')
-rw-r--r--service/pixelated/adapter/services/mailbox.py52
-rw-r--r--service/pixelated/adapter/services/mailboxes.py99
2 files changed, 0 insertions, 151 deletions
diff --git a/service/pixelated/adapter/services/mailbox.py b/service/pixelated/adapter/services/mailbox.py
deleted file mode 100644
index de86f79d..00000000
--- a/service/pixelated/adapter/services/mailbox.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Copyright (c) 2014 ThoughtWorks, Inc.
-#
-# Pixelated is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Pixelated is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
-
-from twisted.internet import defer
-
-
-class Mailbox(object):
-
- def __init__(self, mailbox_name, querier, search_engine):
- self.mailbox_name = mailbox_name
- self.mailbox_tag = mailbox_name.lower()
- self.search_engine = search_engine
- self.querier = querier
-
- @property
- @defer.inlineCallbacks
- def fresh(self):
- defer.returnValue((yield self.querier.get_lastuid(self.mailbox_name)) == 0)
-
- def mail(self, mail_id):
- return self.querier.mail(mail_id)
-
- @defer.inlineCallbacks
- def add(self, mail):
- added_mail = yield self.querier.create_mail(mail, self.mailbox_name)
-
- self.search_engine.index_mail(added_mail)
- defer.returnValue(added_mail)
-
- @defer.inlineCallbacks
- def remove(self, ident):
- mail = yield self.querier.mail(ident)
- self.search_engine.remove_from_index(mail.ident)
- yield mail.remove_all_tags()
- yield self.querier.remove_mail(mail)
-
- @classmethod
- def create(cls, mailbox_name, soledad_querier, search_engine):
- return Mailbox(mailbox_name, soledad_querier, search_engine)
diff --git a/service/pixelated/adapter/services/mailboxes.py b/service/pixelated/adapter/services/mailboxes.py
deleted file mode 100644
index f8420326..00000000
--- a/service/pixelated/adapter/services/mailboxes.py
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# Copyright (c) 2014 ThoughtWorks, Inc.
-#
-# Pixelated is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Pixelated is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
-from twisted.internet import defer
-from pixelated.adapter.services.mailbox import Mailbox
-from pixelated.adapter.listeners.mailbox_indexer_listener import MailboxIndexerListener
-from pixelated.adapter.model.mail import welcome_mail
-from twisted.mail.imap4 import MailboxCollision
-
-
-class Mailboxes(object):
-
- def __init__(self, account, mail_store, soledad_querier, search_engine):
- self.account = account
- self.querier = soledad_querier
- self.search_engine = search_engine
- self.mail_store = mail_store
- # for mailbox_name in account.mailboxes:
- # MailboxIndexerListener.listen(self.account, mailbox_name, soledad_querier)
-
- @defer.inlineCallbacks
- def index_mailboxes(self):
- mailboxes = yield self.account.account.list_all_mailbox_names()
- yield self._index_mailboxes(mailboxes)
-
- @defer.inlineCallbacks
- def _index_mailboxes(self, mailboxes):
- for mailbox_name in mailboxes:
- yield MailboxIndexerListener.listen(self.account, mailbox_name, self.mail_store)
-
- @defer.inlineCallbacks
- def _create_or_get(self, mailbox_name):
- mailbox_name = mailbox_name.upper()
- # if mailbox_name not in self.account.mailboxes:
- if mailbox_name not in (yield self.account.account.list_all_mailbox_names()):
- try:
- yield self.account.addMailbox(mailbox_name)
- except MailboxCollision:
- pass
- # It means that it is already created. FIXME Why list_all fails to tell?
- yield MailboxIndexerListener.listen(self.account, mailbox_name, self.mail_store)
- defer.returnValue(Mailbox.create(mailbox_name, self.querier, self.search_engine))
-
- @property
- def inbox(self):
- return self._create_or_get('INBOX')
-
- @property
- def drafts(self):
- return self._create_or_get('DRAFTS')
-
- @property
- def trash(self):
- return self._create_or_get('TRASH')
-
- @property
- def sent(self):
- return self._create_or_get('SENT')
-
- @defer.inlineCallbacks
- def mailboxes(self):
- mailboxes_names = yield self.account.account.list_all_mailbox_names()
- defer.returnValue([(yield self._create_or_get(leap_mailbox_name)) for leap_mailbox_name in mailboxes_names])
-
- def move_to_trash(self, mail_id):
- return self._move_to(mail_id, self.trash)
-
- def move_to_inbox(self, mail_id):
- return self._move_to(mail_id, self.inbox)
-
- @defer.inlineCallbacks
- def _move_to(self, mail_id, mailbox):
- mailbox = yield mailbox
- mail = yield self.querier.mail(mail_id)
- mail.set_mailbox(mailbox.mailbox_name)
- mail.save()
- defer.returnValue(mail)
-
- def mail(self, mail_id):
- return self.querier.mail(mail_id)
-
- @defer.inlineCallbacks
- def add_welcome_mail_for_fresh_user(self):
- inbox = yield self._create_or_get('INBOX')
- if (yield inbox.fresh):
- mail = welcome_mail()
- yield inbox.add(mail)