Fixed #21606 -- Fixed default_lat and default_lon override in OSMWidget
This commit is contained in:
parent
f685f94c98
commit
2ddf1fc50f
|
@ -103,6 +103,13 @@ class OSMWidget(BaseGeometryWidget):
|
||||||
'gis/js/OLMapWidget.js',
|
'gis/js/OLMapWidget.js',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __init__(self, attrs=None):
|
||||||
|
super(OSMWidget, self).__init__()
|
||||||
|
for key in ('default_lon', 'default_lat'):
|
||||||
|
self.attrs[key] = getattr(self, key)
|
||||||
|
if attrs:
|
||||||
|
self.attrs.update(attrs)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def map_srid(self):
|
def map_srid(self):
|
||||||
# Use the official spherical mercator projection SRID on versions
|
# Use the official spherical mercator projection SRID on versions
|
||||||
|
@ -111,12 +118,3 @@ class OSMWidget(BaseGeometryWidget):
|
||||||
return 3857
|
return 3857
|
||||||
else:
|
else:
|
||||||
return 900913
|
return 900913
|
||||||
|
|
||||||
def render(self, name, value, attrs=None):
|
|
||||||
default_attrs = {
|
|
||||||
'default_lon': self.default_lon,
|
|
||||||
'default_lat': self.default_lat,
|
|
||||||
}
|
|
||||||
if attrs:
|
|
||||||
default_attrs.update(attrs)
|
|
||||||
return super(OSMWidget, self).render(name, value, default_attrs)
|
|
||||||
|
|
|
@ -257,6 +257,15 @@ class SpecializedFieldTest(SimpleTestCase):
|
||||||
for invalid in [geo for key, geo in self.geometries.items() if key != 'geometrycollection']:
|
for invalid in [geo for key, geo in self.geometries.items() if key != 'geometrycollection']:
|
||||||
self.assertFalse(GeometryForm(data={'g': invalid.wkt}).is_valid())
|
self.assertFalse(GeometryForm(data={'g': invalid.wkt}).is_valid())
|
||||||
|
|
||||||
|
|
||||||
|
@skipUnless(HAS_GDAL and HAS_SPATIALREFSYS,
|
||||||
|
"OSMWidgetTest needs gdal support and a spatial database")
|
||||||
|
class OSMWidgetTest(SimpleTestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.geometries = {
|
||||||
|
'point': GEOSGeometry("SRID=4326;POINT(9.052734375 42.451171875)"),
|
||||||
|
}
|
||||||
|
|
||||||
def test_osm_widget(self):
|
def test_osm_widget(self):
|
||||||
class PointForm(forms.Form):
|
class PointForm(forms.Form):
|
||||||
p = forms.PointField(widget=forms.OSMWidget)
|
p = forms.PointField(widget=forms.OSMWidget)
|
||||||
|
@ -264,9 +273,32 @@ class SpecializedFieldTest(SimpleTestCase):
|
||||||
geom = self.geometries['point']
|
geom = self.geometries['point']
|
||||||
form = PointForm(data={'p': geom})
|
form = PointForm(data={'p': geom})
|
||||||
rendered = form.as_p()
|
rendered = form.as_p()
|
||||||
|
|
||||||
self.assertIn("OpenStreetMap (Mapnik)", rendered)
|
self.assertIn("OpenStreetMap (Mapnik)", rendered)
|
||||||
self.assertIn("id: 'id_p',", rendered)
|
self.assertIn("id: 'id_p',", rendered)
|
||||||
|
|
||||||
|
def test_default_lat_lon(self):
|
||||||
|
class PointForm(forms.Form):
|
||||||
|
p = forms.PointField(
|
||||||
|
widget=forms.OSMWidget(attrs={
|
||||||
|
'default_lon': 20, 'default_lat': 30
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
form = PointForm()
|
||||||
|
rendered = form.as_p()
|
||||||
|
|
||||||
|
self.assertIn("options['default_lon'] = 20;", rendered)
|
||||||
|
self.assertIn("options['default_lat'] = 30;", rendered)
|
||||||
|
if forms.OSMWidget.default_lon != 20:
|
||||||
|
self.assertNotIn(
|
||||||
|
"options['default_lon'] = %d;" % forms.OSMWidget.default_lon,
|
||||||
|
rendered)
|
||||||
|
if forms.OSMWidget.default_lat != 30:
|
||||||
|
self.assertNotIn(
|
||||||
|
"options['default_lat'] = %d;" % forms.OSMWidget.default_lat,
|
||||||
|
rendered)
|
||||||
|
|
||||||
|
|
||||||
@skipUnless(HAS_GDAL and HAS_SPATIALREFSYS,
|
@skipUnless(HAS_GDAL and HAS_SPATIALREFSYS,
|
||||||
"CustomGeometryWidgetTest needs gdal support and a spatial database")
|
"CustomGeometryWidgetTest needs gdal support and a spatial database")
|
||||||
|
|
Loading…
Reference in New Issue