summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
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
commitf11008a45e1b44846afe07fde04d55c79772fbd5 (patch)
tree4958966179956bcae94cbcb5188311b72e2763e6 /ishtar_common/views.py
parent6e97cb35ae70db6c816599277da03faab228fa76 (diff)
downloadIshtar-f11008a45e1b44846afe07fde04d55c79772fbd5.tar.bz2
Ishtar-f11008a45e1b44846afe07fde04d55c79772fbd5.zip
Geodata: fix creation from find
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py29
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