From 6df9e2c2646975ffc7c312f675591870eb4b2ad8 Mon Sep 17 00:00:00 2001 From: Jefferson Stachelski Date: Fri, 25 Sep 2015 19:05:01 -0300 Subject: Issue #470 handling the update draft Deleting the new draft created if the old one was not found to fix the duplication drafts --- service/pixelated/adapter/services/draft_service.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'service/pixelated/adapter/services') diff --git a/service/pixelated/adapter/services/draft_service.py b/service/pixelated/adapter/services/draft_service.py index c3a14928..65794f04 100644 --- a/service/pixelated/adapter/services/draft_service.py +++ b/service/pixelated/adapter/services/draft_service.py @@ -14,6 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see . from twisted.internet import defer +from pixelated.adapter.errors import DuplicatedDraftException class DraftService(object): @@ -32,8 +33,16 @@ class DraftService(object): @defer.inlineCallbacks def update_draft(self, ident, input_mail): new_draft = yield self.create_draft(input_mail) - yield self._mail_store.delete_mail(ident) - defer.returnValue(new_draft) + try: + yield self._mail_store.delete_mail(ident) + defer.returnValue(new_draft) + except Exception as error: + errorMessage = error.args[0].getErrorMessage() + + if errorMessage == 'Need to create doc before deleting': + yield self._mail_store.delete_mail(new_draft.ident) + raise DuplicatedDraftException(errorMessage) + # pixelated_mail = yield self.create_draft(input_mail) # yield (yield self._mailboxes.drafts).remove(ident) # defer.returnValue(pixelated_mail) -- cgit v1.2.3