diff --git a/konova/forms/geometry_form.py b/konova/forms/geometry_form.py index f5143509..cc4fcaf5 100644 --- a/konova/forms/geometry_form.py +++ b/konova/forms/geometry_form.py @@ -54,7 +54,7 @@ class SimpleGeomForm(BaseForm): geom = json.dumps(geojson) except AttributeError: # If no geometry exists for this form, we simply set the value to None and zoom to the maximum level - geom = "" + geom = json.dumps({}) self.empty = True self.initialize_form_field("output", geom) @@ -72,20 +72,12 @@ class SimpleGeomForm(BaseForm): self.initialize_form_field("output", json.dumps(submitted_data)) # Get geojson from form for validity checking - geom = self.data.get("output", None) - geom_is_empty = geom is None or len(geom) == 0 - if geom_is_empty: - # If no geometry has been submitted, we create an empty geometry object since - # an empty geometry is a valid geometry - self.cleaned_data["output"] = MultiPolygon(srid=DEFAULT_SRID_RLP).ewkt - return is_valid + geom = self.data.get("output", json.dumps({})) + geom = json.loads(geom) # Initialize features list with empty MultiPolygon, so that an empty input will result in a # proper empty MultiPolygon object features = [] - - # Prepare geometry for validity checks (create iterable dict) - geom = json.loads(geom) features_json = geom.get("features", []) accepted_ogr_types = [ "Polygon", @@ -141,6 +133,7 @@ class SimpleGeomForm(BaseForm): if features: form_geom = MultiPolygon(*features, srid=DEFAULT_SRID_RLP).unary_union else: + # If no features have been processed, this indicates an empty geometry - so we store an empty geometry form_geom = MultiPolygon(srid=DEFAULT_SRID_RLP) # Make sure to convert into a MultiPolygon. Relevant if a single Polygon is provided.