summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2015-07-22 09:37:24 +0000
committerFolker Bernitt <fbernitt@thoughtworks.com>2015-08-11 17:00:27 +0200
commit414f210a908427da10a90fb4c8c83d58e1496b26 (patch)
tree45b6eb2e12a15232f732993658cbe9276cd4b4cc /service/pixelated
parentcb0c0b7905be251191e9ef78908d84ed617283c8 (diff)
Fixed test_delete_mail integration test.
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/adapter/services/mail_service.py12
-rw-r--r--service/pixelated/adapter/services/mailboxes.py2
-rw-r--r--service/pixelated/resources/mail_resource.py11
-rw-r--r--service/pixelated/resources/mails_resource.py14
4 files changed, 29 insertions, 10 deletions
diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py
index b66d7345..da1b1bea 100644
--- a/service/pixelated/adapter/services/mail_service.py
+++ b/service/pixelated/adapter/services/mail_service.py
@@ -100,19 +100,21 @@ class MailService(object):
yield mail.mark_as_unread()
self.search_engine.index_mail(mail)
+ @defer.inlineCallbacks
def delete_mail(self, mail_id):
- mail = self.mail(mail_id)
+ mail = yield self.mail(mail_id)
if mail.mailbox_name == 'TRASH':
- self.delete_permanent(mail_id)
+ yield self.delete_permanent(mail_id)
else:
- trashed_mail = self.mailboxes.move_to_trash(mail_id)
+ trashed_mail = yield self.mailboxes.move_to_trash(mail_id)
self.search_engine.index_mail(trashed_mail)
def recover_mail(self, mail_id):
recovered_mail = self.mailboxes.move_to_inbox(mail_id)
self.search_engine.index_mail(recovered_mail)
+ @defer.inlineCallbacks
def delete_permanent(self, mail_id):
- mail = self.mail(mail_id)
+ mail = yield self.mail(mail_id)
self.search_engine.remove_from_index(mail_id)
- self.querier.remove_mail(mail)
+ yield self.querier.remove_mail(mail)
diff --git a/service/pixelated/adapter/services/mailboxes.py b/service/pixelated/adapter/services/mailboxes.py
index 45dd9192..19176a32 100644
--- a/service/pixelated/adapter/services/mailboxes.py
+++ b/service/pixelated/adapter/services/mailboxes.py
@@ -77,7 +77,7 @@ class Mailboxes(object):
@defer.inlineCallbacks
def _move_to(self, mail_id, mailbox):
mailbox = yield mailbox
- mail = self.querier.mail(mail_id)
+ mail = yield self.querier.mail(mail_id)
mail.set_mailbox(mailbox.mailbox_name)
mail.save()
defer.returnValue(mail)
diff --git a/service/pixelated/resources/mail_resource.py b/service/pixelated/resources/mail_resource.py
index f11862af..436842fb 100644
--- a/service/pixelated/resources/mail_resource.py
+++ b/service/pixelated/resources/mail_resource.py
@@ -2,6 +2,7 @@ import json
from pixelated.resources import respond_json, respond_json_deferred
from twisted.web.resource import Resource
from twisted.web.server import NOT_DONE_YET
+from twisted.python.log import err
class MailTags(Resource):
@@ -42,8 +43,14 @@ class Mail(Resource):
return NOT_DONE_YET
def render_DELETE(self, request):
- self._mail_service.delete_mail(self._mail_id)
- return respond_json(None, request)
+ def response_failed(failure):
+ err(failure, 'something failed')
+ request.finish()
+
+ d = self._mail_service.delete_mail(self._mail_id)
+ d.addCallback(lambda _: respond_json_deferred(None, request))
+ d.addErrback(response_failed)
+ return NOT_DONE_YET
class MailResource(Resource):
diff --git a/service/pixelated/resources/mails_resource.py b/service/pixelated/resources/mails_resource.py
index 27232ffc..1056dcdb 100644
--- a/service/pixelated/resources/mails_resource.py
+++ b/service/pixelated/resources/mails_resource.py
@@ -6,6 +6,7 @@ from pixelated.resources import respond_json, respond_json_deferred
from twisted.web.resource import Resource
from twisted.web import server
from twisted.internet import defer
+from twisted.python.log import err
from leap.common.events import (
register,
catalog as events
@@ -60,10 +61,19 @@ class MailsDeleteResource(Resource):
self._mail_service = mail_service
def render_POST(self, request):
+ def response_failed(failure):
+ err(failure, 'something failed')
+ request.finish()
+
idents = json.loads(request.content.read())['idents']
+ deferreds = []
for ident in idents:
- self._mail_service.delete_mail(ident)
- return respond_json(None, request)
+ deferreds.append(self._mail_service.delete_mail(ident))
+
+ d = defer.gatherResults(deferreds, consumeErrors=True)
+ d.addCallback(lambda _: respond_json_deferred(None, request))
+ d.addErrback(response_failed)
+ return NOT_DONE_YET
class MailsRecoverResource(Resource):