From be0531415d8cfb42c2d4c233431bf2d2dd2294b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 22 Nov 2018 19:45:12 +0100 Subject: [PATCH] HTTP 409 makes sense in a number of cases --- src/c3nav/editor/views/base.py | 2 ++ src/c3nav/editor/views/edit.py | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/c3nav/editor/views/base.py b/src/c3nav/editor/views/base.py index 54b58fd1..da61c9d5 100644 --- a/src/c3nav/editor/views/base.py +++ b/src/c3nav/editor/views/base.py @@ -112,6 +112,8 @@ class APIHybridMessageRedirectResponse(APIHybridResponse): self.level = level self.message = message self.redirect_to = redirect_to + if self.level == 'error' and status_code is None: + raise Exception('Error with HTTP 200 makes no sense!') self.status_code = status_code def get_api_response(self, request): diff --git a/src/c3nav/editor/views/edit.py b/src/c3nav/editor/views/edit.py index 900363f0..d0a4a412 100644 --- a/src/c3nav/editor/views/edit.py +++ b/src/c3nav/editor/views/edit.py @@ -261,7 +261,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e if new: return APIHybridMessageRedirectResponse( level='error', message=_('You can not create new objects because your changeset is full.'), - redirect_to=ctx['back_url'], status_code=403, + redirect_to=ctx['back_url'], status_code=409, ) elif obj.pk not in model_changes: messages.warning(request, _('You can not edit this object because your changeset is full.')) @@ -286,7 +286,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e if nosave: return APIHybridMessageRedirectResponse( level='error', message=_('You can not edit this object because your changeset is full.'), - redirect_to=request.path, status_code=403, + redirect_to=request.path, status_code=409, ) if not can_edit: @@ -304,7 +304,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e return APIHybridMessageRedirectResponse( level='error', message=_('You can not delete this object because other objects still depend on it.'), - redirect_to=request.path, status_code=403, + redirect_to=request.path, status_code=409, ) if request.POST.get('delete_confirm') == '1' or delete: