From 7754643c4be56fdc94b7fbc52aa2b10e6ed98051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 23 Dec 2018 19:50:53 +0100 Subject: [PATCH] treat empty geometries correctly --- src/c3nav/mapdata/fields.py | 2 ++ src/c3nav/mapdata/utils/geometry.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/c3nav/mapdata/fields.py b/src/c3nav/mapdata/fields.py index 5c333a85..948a8f44 100644 --- a/src/c3nav/mapdata/fields.py +++ b/src/c3nav/mapdata/fields.py @@ -106,6 +106,8 @@ class GeometryField(models.TextField): if value is None: return None self._validate_geomtype(value, exception=TypeError) + if value.is_empty: + raise Exception('Cannot save empty geometry.') return json.dumps(self.get_final_value(value, as_json=True)) def value_to_string(self, obj): diff --git a/src/c3nav/mapdata/utils/geometry.py b/src/c3nav/mapdata/utils/geometry.py index f6d5b747..9ae6b2fb 100644 --- a/src/c3nav/mapdata/utils/geometry.py +++ b/src/c3nav/mapdata/utils/geometry.py @@ -41,6 +41,8 @@ class WrappedGeometry(): @cached_property def wrapped_geom(self): + if not self.wrapped_geojson['coordinates']: + return GeometryCollection() return shapely_shape(self.wrapped_geojson) def __getattr__(self, name):