diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 29 | 
1 files changed, 26 insertions, 3 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 3ed8ad904..db05c74a1 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -2733,17 +2733,34 @@ class GeoPreCreateView(IshtarMixin, LoginRequiredMixin, FormView):          return kwargs      def form_valid(self, form): +        model_source = self.kwargs.get("model_source") +        source_pk = self.kwargs.get("source_pk") +        find_id = None +        if model_source == "find": +            try: +                find = Find.objects.get(pk=source_pk) +            except Find.DoesNotExist: +                raise Http404() +            bf = find.get_first_base_find() +            if not bf: +                raise Http404() +            model_source = "basefind" +            find_id = source_pk +            source_pk = bf.pk          success_url = reverse(              "create-geo",              kwargs={                  "app_source": self.kwargs.get("app_source"), -                "model_source": self.kwargs.get("model_source"), -                "source_pk": self.kwargs.get("source_pk"), +                "model_source": model_source, +                "source_pk": source_pk,                  "geom_type": form.cleaned_data.get("geom_type"),              }          )          if self.back_url:              success_url += "?back_url=" + urllib.parse.quote(self.back_url) +        if find_id: +            success_url += "&" if self.back_url else "?" +            success_url += f"find_id={find_id}"          return HttpResponseRedirect(success_url) @@ -2754,10 +2771,12 @@ class GeoFormMixin(IshtarMixin, LoginRequiredMixin):      def get(self, request, *args, **kwargs):          self.back_url = request.GET.get("back_url") +        self.find_id = request.GET.get("find_id")          return super().get(request, *args, **kwargs)      def post(self, request, *args, **kwargs):          self.back_url = request.POST.get("back_url") +        self.find_id = request.POST.get("find_id")          return super().post(request, *args, **kwargs)      def get_context_data(self, **kwargs): @@ -2768,11 +2787,15 @@ class GeoFormMixin(IshtarMixin, LoginRequiredMixin):      def get_success_url(self):          if not self.back_url:              return reverse("edit-geo", kwargs={"pk": self.object.pk}) -        return self.back_url +        back_url = self.back_url +        if self.find_id: +            back_url = back_url.split("=")[0] + "=" + str(self.find_id) +        return back_url      def get_form_kwargs(self):          kwargs = super().get_form_kwargs()          kwargs["back_url"] = self.back_url +        kwargs["find_id"] = self.find_id          return kwargs | 
