Commit 5585a2a7 authored by Alex Kerney's avatar Alex Kerney

Passing 'data-widths' and 'data-height' to the Leaflet view if the keys are in `form_widget_args`

parent 6e333212
...@@ -37,7 +37,7 @@ class JSONField(TextAreaField): ...@@ -37,7 +37,7 @@ class JSONField(TextAreaField):
class GeoJSONField(JSONField): class GeoJSONField(JSONField):
widget = LeafletWidget() widget = LeafletWidget()
def __init__(self, label=None, validators=None, geometry_type="GEOMETRY", srid='-1', session=None, **kwargs): def __init__(self, label=None, validators=None, geometry_type="GEOMETRY", srid='-1', session=None, **kwargs):
super(GeoJSONField, self).__init__(label, validators, **kwargs) super(GeoJSONField, self).__init__(label, validators, **kwargs)
self.web_srid = 4326 self.web_srid = 4326
...@@ -48,20 +48,21 @@ class GeoJSONField(JSONField): ...@@ -48,20 +48,21 @@ class GeoJSONField(JSONField):
self.transform_srid = self.srid self.transform_srid = self.srid
self.geometry_type = geometry_type.upper() self.geometry_type = geometry_type.upper()
self.session = session self.session = session
def _value(self): def _value(self):
if self.raw_data: if self.raw_data:
return self.raw_data[0] return self.raw_data[0]
if type(self.data) is geoalchemy2.elements.WKBElement: if type(self.data) is geoalchemy2.elements.WKBElement:
if self.srid is -1: if self.srid is -1:
self.data = self.session.scalar(func.ST_AsGeoJson(self.data)) self.data = self.session.scalar(func.ST_AsGeoJson(self.data))
else: else:
self.data = self.session.scalar(func.ST_AsGeoJson(func.ST_Transform(self.data, self.web_srid))) self.data = self.session.scalar(func.ST_AsGeoJson(func.ST_Transform(self.data, self.web_srid)))
return super(GeoJSONField, self)._value() return super(GeoJSONField, self)._value()
def process_formdata(self, valuelist): def process_formdata(self, valuelist):
super(GeoJSONField, self).process_formdata(valuelist) super(GeoJSONField, self).process_formdata(valuelist)
print type(self.data) if str(self.data) is '':
self.data = None
if type(self.data) is not NoneType: if type(self.data) is not NoneType:
web_shape = self.session.scalar(func.ST_AsText(func.ST_Transform(func.ST_GeomFromText(shape(self.data).wkt, self.web_srid), self.transform_srid))) web_shape = self.session.scalar(func.ST_AsText(func.ST_Transform(func.ST_GeomFromText(shape(self.data).wkt, self.web_srid), self.transform_srid)))
self.data = 'SRID='+str(self.srid)+';'+str(web_shape) self.data = 'SRID='+str(self.srid)+';'+str(web_shape)
...@@ -36,9 +36,10 @@ class LeafletWidget(TextArea): ...@@ -36,9 +36,10 @@ class LeafletWidget(TextArea):
kwargs.setdefault('data-geometry-type', gtype) kwargs.setdefault('data-geometry-type', gtype)
# set optional values from constructor # set optional values from constructor
if self.width: print kwargs
if not kwargs.has_key("data-width"):
kwargs["data-width"] = self.width kwargs["data-width"] = self.width
if self.height: if not kwargs.has_key("data-height"):
kwargs["data-height"] = self.height kwargs["data-height"] = self.height
if self.center: if self.center:
kwargs["data-lat"] = lat(self.center) kwargs["data-lat"] = lat(self.center)
...@@ -67,4 +68,5 @@ class LeafletWidget(TextArea): ...@@ -67,4 +68,5 @@ class LeafletWidget(TextArea):
kwargs["data-max-bounds-ne-lat"] = maxx kwargs["data-max-bounds-ne-lat"] = maxx
kwargs["data-max-bounds-ne-lng"] = maxy kwargs["data-max-bounds-ne-lng"] = maxy
print kwargs
return super(LeafletWidget, self).__call__(field, **kwargs) return super(LeafletWidget, self).__call__(field, **kwargs)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment