diff options
Diffstat (limited to 'django/contrib/gis/forms/widgets.py')
| -rw-r--r-- | django/contrib/gis/forms/widgets.py | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/django/contrib/gis/forms/widgets.py b/django/contrib/gis/forms/widgets.py index e38f173a98..0f53ee2e96 100644 --- a/django/contrib/gis/forms/widgets.py +++ b/django/contrib/gis/forms/widgets.py @@ -7,7 +7,7 @@ from django.contrib.gis.geos import GEOSException, GEOSGeometry from django.forms.widgets import Widget from django.utils import translation -logger = logging.getLogger('django.contrib.gis') +logger = logging.getLogger("django.contrib.gis") class BaseGeometryWidget(Widget): @@ -15,24 +15,25 @@ class BaseGeometryWidget(Widget): The base class for rich geometry widgets. Render a map using the WKT of the geometry. """ - geom_type = 'GEOMETRY' + + geom_type = "GEOMETRY" map_srid = 4326 map_width = 600 map_height = 400 display_raw = False supports_3d = False - template_name = '' # set on subclasses + template_name = "" # set on subclasses def __init__(self, attrs=None): self.attrs = {} - for key in ('geom_type', 'map_srid', 'map_width', 'map_height', 'display_raw'): + for key in ("geom_type", "map_srid", "map_width", "map_height", "display_raw"): self.attrs[key] = getattr(self, key) if attrs: self.attrs.update(attrs) def serialize(self, value): - return value.wkt if value else '' + return value.wkt if value else "" def deserialize(self, value): try: @@ -58,40 +59,47 @@ class BaseGeometryWidget(Widget): except gdal.GDALException as err: logger.error( "Error transforming geometry from srid '%s' to srid '%s' (%s)", - value.srid, self.map_srid, err + value.srid, + self.map_srid, + err, ) - geom_type = gdal.OGRGeomType(self.attrs['geom_type']).name - context.update(self.build_attrs(self.attrs, { - 'name': name, - 'module': 'geodjango_%s' % name.replace('-', '_'), # JS-safe - 'serialized': self.serialize(value), - 'geom_type': 'Geometry' if geom_type == 'Unknown' else geom_type, - 'STATIC_URL': settings.STATIC_URL, - 'LANGUAGE_BIDI': translation.get_language_bidi(), - **(attrs or {}), - })) + geom_type = gdal.OGRGeomType(self.attrs["geom_type"]).name + context.update( + self.build_attrs( + self.attrs, + { + "name": name, + "module": "geodjango_%s" % name.replace("-", "_"), # JS-safe + "serialized": self.serialize(value), + "geom_type": "Geometry" if geom_type == "Unknown" else geom_type, + "STATIC_URL": settings.STATIC_URL, + "LANGUAGE_BIDI": translation.get_language_bidi(), + **(attrs or {}), + }, + ) + ) return context class OpenLayersWidget(BaseGeometryWidget): - template_name = 'gis/openlayers.html' + template_name = "gis/openlayers.html" map_srid = 3857 class Media: css = { - 'all': ( - 'https://cdnjs.cloudflare.com/ajax/libs/ol3/4.6.5/ol.css', - 'gis/css/ol3.css', + "all": ( + "https://cdnjs.cloudflare.com/ajax/libs/ol3/4.6.5/ol.css", + "gis/css/ol3.css", ) } js = ( - 'https://cdnjs.cloudflare.com/ajax/libs/ol3/4.6.5/ol.js', - 'gis/js/OLMapWidget.js', + "https://cdnjs.cloudflare.com/ajax/libs/ol3/4.6.5/ol.js", + "gis/js/OLMapWidget.js", ) def serialize(self, value): - return value.json if value else '' + return value.json if value else "" def deserialize(self, value): geom = super().deserialize(value) @@ -105,14 +113,15 @@ class OSMWidget(OpenLayersWidget): """ An OpenLayers/OpenStreetMap-based widget. """ - template_name = 'gis/openlayers-osm.html' + + template_name = "gis/openlayers-osm.html" default_lon = 5 default_lat = 47 default_zoom = 12 def __init__(self, attrs=None): super().__init__() - for key in ('default_lon', 'default_lat', 'default_zoom'): + for key in ("default_lon", "default_lat", "default_zoom"): self.attrs[key] = getattr(self, key) if attrs: self.attrs.update(attrs) |
