summaryrefslogtreecommitdiff
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
parent6e97cb35ae70db6c816599277da03faab228fa76 (diff)
downloadIshtar-f11008a45e1b44846afe07fde04d55c79772fbd5.tar.bz2
Ishtar-f11008a45e1b44846afe07fde04d55c79772fbd5.zip
Geodata: fix creation from find
-rw-r--r--ishtar_common/forms_common.py7
-rw-r--r--ishtar_common/templates/ishtar/blocks/sheet_map.html2
-rw-r--r--ishtar_common/views.py29
3 files changed, 33 insertions, 5 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 11ae2009b..c6dbc9ae9 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -2611,7 +2611,6 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
pk = forms.IntegerField(label="", required=False, widget=forms.HiddenInput)
name = forms.CharField(
label=_("Name"),
- required=False,
validators=[validators.MaxLengthValidator(500)],
)
import_key = forms.CharField(
@@ -2700,6 +2699,9 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
back_url = ""
if "back_url" in kwargs:
back_url = kwargs.pop("back_url")
+ find_id = ""
+ if "find_id" in kwargs:
+ find_id = kwargs.pop("find_id")
main_items_fields = {}
if "main_items_fields" in kwargs:
main_items_fields = kwargs.pop("main_items_fields")
@@ -2719,6 +2721,9 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType):
if back_url:
self.fields["back_url"] = forms.CharField(
label="", required=False, widget=forms.HiddenInput, initial=back_url)
+ if find_id:
+ self.fields["find_id"] = forms.CharField(
+ label="", required=False, widget=forms.HiddenInput, initial=find_id)
if not self.fields["import_key"].initial:
self.fields.pop("import_key")
if not self.source_content_type:
diff --git a/ishtar_common/templates/ishtar/blocks/sheet_map.html b/ishtar_common/templates/ishtar/blocks/sheet_map.html
index 954a7337d..bb143f1dc 100644
--- a/ishtar_common/templates/ishtar/blocks/sheet_map.html
+++ b/ishtar_common/templates/ishtar/blocks/sheet_map.html
@@ -15,7 +15,7 @@
{% if not forloop.counter0 %}checked{% endif %}
>
&nbsp; <label for="map-ol-{{geo_item.SLUG}}-{{geo_item.pk}}-{{geodata.pk}}">
- <strong>{{geodata.data_type}}</strong></label><br/>
+ <strong>{% if geodata.data_type %}{{geodata.data_type}}{% else %}-{% endif %}</strong></label><br/>
{{geodata.name}}
</li>{% endfor %}
{% if geo_item.SLUG == "operation" and display_context_records %}
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