From 1bc40bcbc0792abe3686f5a09eeb7a229ab18a95 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 1 Jun 2022 17:39:10 +0200 Subject: Geodata - geo forms: create item form --- ishtar_common/views.py | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'ishtar_common/views.py') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index f79ad25ee..9d5256df5 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -2713,6 +2713,24 @@ class DisplayItemView(IshtarMixin, TemplateView): return data +class GeoPreCreateView(IshtarMixin, LoginRequiredMixin, FormView): + page_name = _("Geo item creation") + form_class = forms.PreGISForm + template_name = "ishtar/forms/base_form.html" + + def form_valid(self, form): + 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"), + "geom_type": form.cleaned_data.get("geom_type"), + } + ) + return HttpResponseRedirect(success_url) + + class GeoFormMixin(IshtarMixin, LoginRequiredMixin): form_class = forms.GISForm template_name = "ishtar/forms/base_related_items.html" @@ -2776,15 +2794,10 @@ class GeoEditView(GeoFormMixin, UpdateView): kwargs["initial"] = initial kwargs["user"] = self.request.user - self.geo = geo - return kwargs - - def get_context_data(self, **kwargs): - kwargs = super(GeoEditView, self).get_context_data(**kwargs) return kwargs -class GeoCreateView(GeoFormMixin, UpdateView): +class GeoCreateView(GeoFormMixin, CreateView): page_name = _("Geo item creation") def get_form_kwargs(self): @@ -2813,6 +2826,19 @@ class GeoCreateView(GeoFormMixin, UpdateView): or not obj.is_own(ishtaruser): # check permission to view own attached item raise Http404() + kwargs["main_items_fields"] = {} + for k in models.GeoVectorData.RELATED_MODELS: + kwargs["main_items_fields"][k] = [] + if k.endswith(obj.SLUG): + kwargs["initial"][k] = [obj.pk] + key = f"{k}_{obj.pk}_main_item" + kwargs["main_items_fields"][k].append( + (key, "{} - {}".format(_("Main geo item for"), obj)) + ) + + kwargs["source_content_type"] = content_type.pk + kwargs["source_id"] = obj.pk + kwargs["geom_type"] = self.kwargs.get("geom_type") kwargs["user"] = self.request.user return kwargs -- cgit v1.2.3