summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2015-08-07 09:30:51 +0200
committerFolker Bernitt <fbernitt@thoughtworks.com>2015-08-11 17:00:33 +0200
commit6b588bb4cb93f8e265d044ea784cb18b7021b26c (patch)
tree01eacc11e8c6bf0a21312cc9b9295f68872130a0 /service/pixelated/adapter
parent08497951fa9aed8d28be8b2dea1aef2135f56769 (diff)
Changed test_delete_mail.py integration test to new mail store.
- intermediate state, some tests are broken
Diffstat (limited to 'service/pixelated/adapter')
-rw-r--r--service/pixelated/adapter/mailstore/leap_mailstore.py21
-rw-r--r--service/pixelated/adapter/services/mail_service.py21
2 files changed, 33 insertions, 9 deletions
diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py
index c3c93cc3..c34d2b16 100644
--- a/service/pixelated/adapter/mailstore/leap_mailstore.py
+++ b/service/pixelated/adapter/mailstore/leap_mailstore.py
@@ -13,6 +13,7 @@
#
# 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 uuid import uuid4
from leap.mail.adaptors.soledad import SoledadMailAdaptor
from twisted.internet import defer
from pixelated.adapter.mailstore.mailstore import MailStore, underscore_uuid
@@ -32,6 +33,10 @@ class LeapMail(Mail):
self._flags = flags
@property
+ def ident(self):
+ return self._mail_id
+
+ @property
def mail_id(self):
return self._mail_id
@@ -84,6 +89,8 @@ class LeapMailStore(MailStore):
defer.returnValue(leap_mail)
except AttributeError, e:
+ import traceback
+ traceback.print_exc()
defer.returnValue(None)
def get_mails(self, mail_ids):
@@ -199,12 +206,24 @@ class LeapMailStore(MailStore):
map = (yield self._mailbox_uuid_to_name_map())
defer.returnValue(map[uuid])
+ @defer.inlineCallbacks
def _get_or_create_mailbox(self, mailbox_name):
- return SoledadMailAdaptor().get_or_create_mbox(self.soledad, mailbox_name)
+ mailbox_name_upper = mailbox_name.upper()
+ mbx = yield SoledadMailAdaptor().get_or_create_mbox(self.soledad, mailbox_name_upper)
+ if mbx.uuid is None:
+ mbx.uuid = str(uuid4())
+ yield mbx.update(self.soledad)
+ defer.returnValue(mbx)
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)
+ @defer.inlineCallbacks
+ def _dump_soledad(self):
+ gen, docs = yield self.soledad.get_all_docs()
+ for doc in docs:
+ print '\n%s\n' % doc
+
def _is_empty_message(message):
return (message is None) or (message.get_wrapper().mdoc.doc_id is None)
diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py
index 23cbc5f7..5e4d7a6d 100644
--- a/service/pixelated/adapter/services/mail_service.py
+++ b/service/pixelated/adapter/services/mail_service.py
@@ -29,15 +29,20 @@ class MailService(object):
@defer.inlineCallbacks
def all_mails(self):
- defer.returnValue((yield self.querier.all_mails()))
+ mails = yield self.mail_store.all_mails()
+ defer.returnValue(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)
-
- defer.returnValue((mails, total))
+ try:
+ mails = yield self.mail_store.get_mails(mail_ids)
+ defer.returnValue((mails, total))
+ except Exception, e:
+ import traceback
+ traceback.print_exc()
+ raise
@defer.inlineCallbacks
def update_tags(self, mail_id, new_tags):
@@ -65,7 +70,7 @@ class MailService(object):
return [_use_current_casing(new_tag.lower()) if new_tag.lower() in current_tags_lower else new_tag for new_tag in new_tags]
def mail(self, mail_id):
- return self.querier.mail(mail_id)
+ return self.mail_store.get_mail(mail_id)
def attachment(self, attachment_id, encoding):
return self.querier.attachment(attachment_id, encoding)
@@ -104,10 +109,10 @@ class MailService(object):
@defer.inlineCallbacks
def delete_mail(self, mail_id):
mail = yield self.mail(mail_id)
- if mail.mailbox_name == 'TRASH':
- yield self.delete_permanent(mail_id)
+ if mail.mailbox_name.upper() == u'TRASH':
+ yield self.mail_store.delete_mail(mail_id)
else:
- trashed_mail = yield self.mailboxes.move_to_trash(mail_id)
+ trashed_mail = yield self.mail_store.move_mail_to_mailbox(mail_id, 'TRASH')
self.search_engine.index_mail(trashed_mail)
def recover_mail(self, mail_id):