From c8d8bb377ab9bc080998ded1ba98777bae3ae7a6 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Sun, 18 Sep 2022 21:53:45 +0200 Subject: Geo form - redirect to source item after edit --- ishtar_common/views.py | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) (limited to 'ishtar_common/views.py') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 6bfe8c0a5..3ed8ad904 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -25,6 +25,7 @@ import json import logging import os import unicodedata +import urllib.parse from django.apps import apps from django.conf import settings @@ -2718,6 +2719,19 @@ class GeoPreCreateView(IshtarMixin, LoginRequiredMixin, FormView): form_class = forms.PreGISForm template_name = "ishtar/forms/base_form.html" + def get(self, request, *args, **kwargs): + self.back_url = request.GET.get("back_url") + return super().get(request, *args, **kwargs) + + def post(self, request, *args, **kwargs): + self.back_url = request.POST.get("back_url") + return super().post(request, *args, **kwargs) + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs["back_url"] = self.back_url + return kwargs + def form_valid(self, form): success_url = reverse( "create-geo", @@ -2728,6 +2742,8 @@ class GeoPreCreateView(IshtarMixin, LoginRequiredMixin, FormView): "geom_type": form.cleaned_data.get("geom_type"), } ) + if self.back_url: + success_url += "?back_url=" + urllib.parse.quote(self.back_url) return HttpResponseRedirect(success_url) @@ -2736,15 +2752,12 @@ class GeoFormMixin(IshtarMixin, LoginRequiredMixin): template_name = "ishtar/forms/geo_form.html" model = models.GeoVectorData - def _get_source(self, request): - self.success_url = request.GET.get("source_url") - def get(self, request, *args, **kwargs): - self._get_source(request) + self.back_url = request.GET.get("back_url") return super().get(request, *args, **kwargs) def post(self, request, *args, **kwargs): - self._get_source(request) + self.back_url = request.POST.get("back_url") return super().post(request, *args, **kwargs) def get_context_data(self, **kwargs): @@ -2753,9 +2766,14 @@ class GeoFormMixin(IshtarMixin, LoginRequiredMixin): return data def get_success_url(self): - if not self.success_url: + if not self.back_url: return reverse("edit-geo", kwargs={"pk": self.object.pk}) - return f"{self.success_url}?open_item={self.object.pk}" + return self.back_url + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs["back_url"] = self.back_url + return kwargs class GeoEditView(GeoFormMixin, UpdateView): @@ -2851,7 +2869,3 @@ class GeoCreateView(GeoFormMixin, CreateView): kwargs["geom_type"] = self.kwargs.get("geom_type") kwargs["user"] = self.request.user return kwargs - - def get_context_data(self, **kwargs): - kwargs = super(GeoCreateView, self).get_context_data(**kwargs) - return kwargs -- cgit v1.2.3