diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/forms_common.py | 29 | ||||
-rw-r--r-- | ishtar_common/views.py | 3 |
2 files changed, 27 insertions, 5 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 3747a03c6..a4a77c8f7 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -2792,7 +2792,8 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType): self.is_instancied = bool(instance) self.source_content_type = kwargs.pop("source_content_type", None) self.source_id = kwargs.pop("source_id", None) - super(GISForm, self).__init__(*args, **kwargs) + self.default_center = kwargs.pop("default_center") if "default_center" in kwargs else None + super().__init__(*args, **kwargs) if back_url: self.fields["back_url"] = forms.CharField( label="", required=False, widget=forms.HiddenInput, initial=back_url) @@ -2807,7 +2808,6 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType): else: self.fields["source_content_type_id"].initial = self.source_content_type self.fields["source_id"].initial = self.source_id - self.geo_keys = self.get_geo_keys(instance) fields = OrderedDict() for related_key in models.GeoVectorData.RELATED_MODELS: @@ -2830,6 +2830,7 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType): fields[field_key] = forms.BooleanField( label=label, required=False, disabled=disabled ) + self.geo_keys = self.get_geo_keys(instance) for k in self.geo_keys: fields[k] = self.fields[k] for k in self.fields: @@ -2853,14 +2854,32 @@ class GISForm(forms.ModelForm, CustomForm, ManageOldType): "z", "estimated_error_z", "spatial_reference_system", ] + base_widget_attrs = {} + if self.default_center: + base_widget_attrs.update({ + "default_lon": self.default_center[0], + "default_lat": self.default_center[1], + }) + else: + profile = models.IshtarSiteProfile.get_current_profile() + if profile.default_center: + # TODO: reverse... + base_widget_attrs.update({ + "default_lon": profile.default_center.y, + "default_lat": profile.default_center.x, + }) for keys in self.GEO_FIELDS: if any(key == self.geom_type for key in keys): map_srid = 4326 widget = widgets.OSMWidget + widget_attrs = { + "map_srid": map_srid, + "cols": True, + "geom_type": self.GEOM_TYPES[self.geom_type] + } + widget_attrs.update(base_widget_attrs) self.fields[keys[0]].widget = widget( - attrs={"map_srid": map_srid, - "cols": True, - "geom_type": self.GEOM_TYPES[self.geom_type]}) + attrs=widget_attrs) self.fields.pop("spatial_reference_system") geo_keys = keys[:] self.fields.pop("x") diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 2ab7e970d..db493fd37 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -2938,6 +2938,9 @@ class GeoCreateView(GeoFormMixin, CreateView): kwargs["source_content_type"] = content_type.pk kwargs["source_id"] = obj.pk kwargs["geom_type"] = self.kwargs.get("geom_type") + main_geodata = obj.main_geodata + if main_geodata and main_geodata.cached_x and main_geodata.cached_y: + kwargs["default_center"] = (main_geodata.cached_x, main_geodata.cached_y) kwargs["user"] = self.request.user return kwargs |