diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-09-28 15:54:24 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:23:18 +0100 |
commit | f11008a45e1b44846afe07fde04d55c79772fbd5 (patch) | |
tree | 4958966179956bcae94cbcb5188311b72e2763e6 /ishtar_common/views.py | |
parent | 6e97cb35ae70db6c816599277da03faab228fa76 (diff) | |
download | Ishtar-f11008a45e1b44846afe07fde04d55c79772fbd5.tar.bz2 Ishtar-f11008a45e1b44846afe07fde04d55c79772fbd5.zip |
Geodata: fix creation from find
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 |