summaryrefslogtreecommitdiff
path: root/service/pixelated/resources/mail_resource.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/resources/mail_resource.py')
-rw-r--r--service/pixelated/resources/mail_resource.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/service/pixelated/resources/mail_resource.py b/service/pixelated/resources/mail_resource.py
index 15ca1939..f11862af 100644
--- a/service/pixelated/resources/mail_resource.py
+++ b/service/pixelated/resources/mail_resource.py
@@ -16,11 +16,14 @@ class MailTags(Resource):
def render_POST(self, request):
new_tags = json.loads(request.content.read()).get('newtags')
- try:
- mail = self._mail_service.update_tags(self._mail_id, new_tags)
- except ValueError as ve:
- return respond_json(ve.message, request, 403)
- return respond_json(mail.as_dict(), request)
+ d = self._mail_service.update_tags(self._mail_id, new_tags)
+ d.addCallback(lambda mail: respond_json_deferred(mail.as_dict(), request))
+
+ def handle403(failure):
+ failure.trap(ValueError)
+ return respond_json_deferred(failure.getErrorMessage(), request, 403)
+ d.addErrback(handle403)
+ return NOT_DONE_YET
class Mail(Resource):