summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2015-07-21 14:48:52 +0000
committerFolker Bernitt <fbernitt@thoughtworks.com>2015-08-11 17:00:26 +0200
commitba1d6edfc144c0549e88392a8414a147a9f30931 (patch)
tree4a66870fb40352bb1dfbef4417761df1e2444605 /service/pixelated
parent9b564a2529326668a0752b3b103bffc145d94417 (diff)
Fixed MarkAsReadUnreadTest#test_mark_single_as_read and underlying implementation.
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/adapter/model/mail.py15
-rw-r--r--service/pixelated/adapter/services/mail_service.py8
-rw-r--r--service/pixelated/resources/mails_resource.py10
3 files changed, 22 insertions, 11 deletions
diff --git a/service/pixelated/adapter/model/mail.py b/service/pixelated/adapter/model/mail.py
index dd32d665..5002974f 100644
--- a/service/pixelated/adapter/model/mail.py
+++ b/service/pixelated/adapter/model/mail.py
@@ -426,18 +426,21 @@ class PixelatedMail(Mail):
yield self._persist_mail_tags(tags)
defer.returnValue(self.tags)
+ @defer.inlineCallbacks
def mark_as_read(self):
if Status.SEEN in self.flags:
- return self
- self.flags.append(Status.SEEN)
- self.save()
- return self
+ defer.returnValue(self)
+ else:
+ self.flags.append(Status.SEEN)
+ yield self.save()
+ defer.returnValue(self)
+ @defer.inlineCallbacks
def mark_as_unread(self):
if Status.SEEN in self.flags:
self.flags.remove(Status.SEEN)
- self.save()
- return self
+ yield self.save()
+ defer.returnValue(self)
def mark_as_not_recent(self):
if Status.RECENT in self.flags:
diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py
index a22ca394..91eeb28f 100644
--- a/service/pixelated/adapter/services/mail_service.py
+++ b/service/pixelated/adapter/services/mail_service.py
@@ -88,13 +88,15 @@ class MailService(object):
yield (yield self.mailboxes.drafts).remove(last_draft_ident)
defer.returnValue((yield (yield self.mailboxes.sent).add(mail)))
+ @defer.inlineCallbacks
def mark_as_read(self, mail_id):
- mail = self.mail(mail_id)
- mail.mark_as_read()
+ mail = yield self.mail(mail_id)
+ yield mail.mark_as_read()
self.search_engine.index_mail(mail)
+ @defer.inlineCallbacks
def mark_as_unread(self, mail_id):
- mail = self.mail(mail_id)
+ mail = yield self.mail(mail_id)
mail.mark_as_unread()
self.search_engine.index_mail(mail)
diff --git a/service/pixelated/resources/mails_resource.py b/service/pixelated/resources/mails_resource.py
index ef112900..0651a909 100644
--- a/service/pixelated/resources/mails_resource.py
+++ b/service/pixelated/resources/mails_resource.py
@@ -5,6 +5,7 @@ from twisted.web.server import NOT_DONE_YET
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 leap.common.events import (
register,
catalog as events
@@ -34,10 +35,15 @@ class MailsReadResource(Resource):
def render_POST(self, request):
idents = json.load(request.content).get('idents')
+ deferreds = []
for ident in idents:
- self._mail_service.mark_as_read(ident)
+ deferreds.append(self._mail_service.mark_as_read(ident))
- return respond_json(None, request)
+ d = defer.gatherResults(deferreds, consumeErrors=True)
+ d.addCallback(lambda _: respond_json_deferred(None, request))
+ d.addErrback(lambda _: respond_json_deferred(None, request, status_code=500))
+
+ return NOT_DONE_YET
class MailsDeleteResource(Resource):