From 77114f18659e7f5f26c1fbd97221baec3d4d07c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 16 May 2017 16:56:50 +0200 Subject: [PATCH] editor: make redirects compatible to noscript --- src/c3nav/editor/views.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/c3nav/editor/views.py b/src/c3nav/editor/views.py index bb437956..8227db59 100644 --- a/src/c3nav/editor/views.py +++ b/src/c3nav/editor/views.py @@ -2,7 +2,8 @@ from functools import wraps from django.conf import settings from django.core.exceptions import PermissionDenied -from django.shortcuts import get_object_or_404, render +from django.http import HttpResponseRedirect +from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse from django.views.decorators.cache import never_cache @@ -15,6 +16,8 @@ def sidebar_view(func): def with_ajax_check(request, *args, **kwargs): response = func(request, *args, **kwargs) if request.is_ajax(): + if isinstance(response, HttpResponseRedirect): + return render(request, 'editor/redirect.html', {'target': response['location']}) return response return render(request, 'editor/map.html', {'content': response.content}) return never_cache(with_ajax_check) @@ -86,7 +89,7 @@ def edit(request, pk=None, model=None): obj.delete() if model == Section: ctx.update({'target': reverse('editor.index')}) - return render(request, 'editor/redirect.html', ctx) + return redirect(reverse('editor.index') if model == Section else ctx['back_url']) return render(request, 'editor/delete.html', ctx) form = model.EditorForm(instance=obj, data=request.POST, request=request) @@ -107,7 +110,7 @@ def edit(request, pk=None, model=None): obj.save() form.save_m2m() - return render(request, 'editor/redirect.html', ctx) + return redirect(ctx['back_url']) else: form = model.EditorForm(instance=obj, request=request)