summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-11-28 18:51:16 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-11-28 18:56:45 +0100
commitaac25d8d954eec47cb6211f58cb1f89d3bbc34d1 (patch)
tree50cf303bccffad3eda1030ba7ef43f254f507d6a /ishtar_common/forms_common.py
parent20954e71e00a2199dde84eb9d5aa42e3bcb155fa (diff)
downloadIshtar-aac25d8d954eec47cb6211f58cb1f89d3bbc34d1.tar.bz2
Ishtar-aac25d8d954eec47cb6211f58cb1f89d3bbc34d1.zip
🐛 New Geo item form: center map widget on the center of the main geo item or use default center of the instance (#5676)
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py29
1 files changed, 24 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")