diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-06-01 17:39:10 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:21:00 +0100 |
commit | 1bc40bcbc0792abe3686f5a09eeb7a229ab18a95 (patch) | |
tree | 78d25ed0a224c5a87af078f12a0bffe9a64c04f2 /ishtar_common/views.py | |
parent | e435a4929b8d315f13184ea65086fc032c1fbea6 (diff) | |
download | Ishtar-1bc40bcbc0792abe3686f5a09eeb7a229ab18a95.tar.bz2 Ishtar-1bc40bcbc0792abe3686f5a09eeb7a229ab18a95.zip |
Geodata - geo forms: create item form
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 38 |
1 files changed, 32 insertions, 6 deletions
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 |