diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 36 | 
1 files changed, 25 insertions, 11 deletions
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  | 
