summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2015-07-31 17:04:25 +0200
committerFolker Bernitt <fbernitt@thoughtworks.com>2015-08-11 17:00:31 +0200
commit38d810d338ce671b6389cd47d665b87798bcd65c (patch)
treecabce0d36989a2645cfafc50a503623a8d0a92ef /service/pixelated/adapter
parent77cb8b69610a893becd99286d85633e5317fedd2 (diff)
First steps migrating mail service to new data model.
Diffstat (limited to 'service/pixelated/adapter')
-rw-r--r--service/pixelated/adapter/mailstore/leap_mailstore.py23
-rw-r--r--service/pixelated/adapter/mailstore/mailstore.py3
-rw-r--r--service/pixelated/adapter/services/mail_service.py6
-rw-r--r--service/pixelated/adapter/services/mailboxes.py3
4 files changed, 27 insertions, 8 deletions
diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py
index cbb9a28a..c1e9f0d8 100644
--- a/service/pixelated/adapter/mailstore/leap_mailstore.py
+++ b/service/pixelated/adapter/mailstore/leap_mailstore.py
@@ -76,8 +76,7 @@ class LeapMailStore(MailStore):
def update_mail(self, mail):
message = yield self._fetch_msg_from_soledad(mail.mail_id)
message.get_wrapper().set_tags(tuple(mail.tags))
- message.get_wrapper().update(self.soledad)
- pass
+ self._update_mail(message)
@defer.inlineCallbacks
def all_mails(self):
@@ -124,6 +123,22 @@ class LeapMailStore(MailStore):
yield SoledadMailAdaptor().delete_mbox(self.soledad, mbx_wrapper)
@defer.inlineCallbacks
+ def copy_mail_to_mailbox(self, mail_id, mailbox_name):
+ message = yield self._fetch_msg_from_soledad(mail_id, load_body=True)
+ mailbox = yield self._get_or_create_mailbox(mailbox_name)
+
+ copy_wrapper = yield message.get_wrapper().copy(self.soledad, mailbox.uuid)
+
+ leap_message = Message(copy_wrapper)
+
+ mail = yield self._leap_message_to_leap_mail(copy_wrapper.mdoc.doc_id, leap_message, include_body=False)
+
+ defer.returnValue(mail)
+
+ def _update_mail(self, message):
+ return message.get_wrapper().update(self.soledad)
+
+ @defer.inlineCallbacks
def _leap_message_to_leap_mail(self, mail_id, message, include_body):
if include_body:
body = (yield message._wrapper.get_body(self.soledad)).raw
@@ -136,8 +151,8 @@ class LeapMailStore(MailStore):
def _get_or_create_mailbox(self, mailbox_name):
return SoledadMailAdaptor().get_or_create_mbox(self.soledad, mailbox_name)
- def _fetch_msg_from_soledad(self, mail_id):
- return SoledadMailAdaptor().get_msg_from_mdoc_id(Message, self.soledad, mail_id)
+ def _fetch_msg_from_soledad(self, mail_id, load_body=False):
+ return SoledadMailAdaptor().get_msg_from_mdoc_id(Message, self.soledad, mail_id, get_cdocs=load_body)
def _is_empty_message(message):
diff --git a/service/pixelated/adapter/mailstore/mailstore.py b/service/pixelated/adapter/mailstore/mailstore.py
index ab7bfb94..29d4fe67 100644
--- a/service/pixelated/adapter/mailstore/mailstore.py
+++ b/service/pixelated/adapter/mailstore/mailstore.py
@@ -46,6 +46,9 @@ class MailStore(object):
def get_mailbox_mail_ids(self, mailbox_name):
pass
+ def copy_mail_to_mailbox(self, mail_id, mailbox_name):
+ pass
+
def underscore_uuid(uuid):
return uuid.replace('-', '_')
diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py
index 23cbc5f7..708297b9 100644
--- a/service/pixelated/adapter/services/mail_service.py
+++ b/service/pixelated/adapter/services/mail_service.py
@@ -29,13 +29,13 @@ class MailService(object):
@defer.inlineCallbacks
def all_mails(self):
- defer.returnValue((yield self.querier.all_mails()))
+ defer.returnValue((yield self.mail_store.all_mails()))
@defer.inlineCallbacks
def mails(self, query, window_size, page):
mail_ids, total = self.search_engine.search(query, window_size, page)
- mails = yield self.querier.mails(mail_ids)
+ mails = yield self.mail_store.get_mails(mail_ids)
defer.returnValue((mails, total))
@@ -72,7 +72,7 @@ class MailService(object):
@defer.inlineCallbacks
def mail_exists(self, mail_id):
- defer.returnValue(not(not((yield self.querier.get_header_by_chash(mail_id)))))
+ defer.returnValue(not (yield self.mail_store.get_mail(mail_id)))
@defer.inlineCallbacks
def send_mail(self, content_dict):
diff --git a/service/pixelated/adapter/services/mailboxes.py b/service/pixelated/adapter/services/mailboxes.py
index 80cc74fe..52c9c212 100644
--- a/service/pixelated/adapter/services/mailboxes.py
+++ b/service/pixelated/adapter/services/mailboxes.py
@@ -22,10 +22,11 @@ from twisted.mail.imap4 import MailboxCollision
class Mailboxes(object):
- def __init__(self, account, soledad_querier, search_engine):
+ 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)