diff options
-rw-r--r-- | ishtar_common/forms_common.py | 7 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/blocks/sheet_map.html | 2 | ||||
-rw-r--r-- | ishtar_common/views.py | 29 |
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 %} > <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 |