diff options
Diffstat (limited to 'service/pixelated/resources/mails_resource.py')
-rw-r--r-- | service/pixelated/resources/mails_resource.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/service/pixelated/resources/mails_resource.py b/service/pixelated/resources/mails_resource.py index 75c0e14f..93a19a9b 100644 --- a/service/pixelated/resources/mails_resource.py +++ b/service/pixelated/resources/mails_resource.py @@ -166,11 +166,17 @@ class MailsResource(Resource): if draft_id: deferred_check = self._mail_service.mail_exists(draft_id) + def handleDuplicatedDraftException(error): + respond_json_deferred("", request, status_code=422) + def return422otherwise(mail_exists): if not mail_exists: respond_json_deferred("", request, status_code=422) else: - defer_response(self._draft_service.update_draft(draft_id, _mail)) + new_draft = self._draft_service.update_draft(draft_id, _mail) + new_draft.addErrback(handleDuplicatedDraftException) + defer_response(new_draft) + deferred_check.addCallback(return422otherwise) else: defer_response(self._draft_service.create_draft(_mail)) |