diff --git a/src/c3nav/mapdata/fields.py b/src/c3nav/mapdata/fields.py index a6171cf7..e3d14af3 100644 --- a/src/c3nav/mapdata/fields.py +++ b/src/c3nav/mapdata/fields.py @@ -80,6 +80,7 @@ class GeometryField(models.TextField): def _validate_geomtype(self, value, exception: typing.Type[Exception] = ValidationError): if not isinstance(value, self.classes): + # if you get this error with wrappedgeometry, looked into wrapped_geom raise exception('Expected %s instance, got %s instead.' % (' or '.join(c.__name__ for c in self.classes), repr(value))) diff --git a/src/c3nav/mapdata/management/commands/cleangeometries.py b/src/c3nav/mapdata/management/commands/cleangeometries.py index a11ce41e..19448ac6 100644 --- a/src/c3nav/mapdata/management/commands/cleangeometries.py +++ b/src/c3nav/mapdata/management/commands/cleangeometries.py @@ -13,6 +13,10 @@ class Command(BaseCommand): for model in get_submodels(GeometryMixin): for instance in model.objects.all(): old_geom = instance.geometry.wrapped_geojson + if instance.geometry.is_empty: + print('Deleted %s' % instance) + instance.delete() + continue instance.save() instance.refresh_from_db() if instance.geometry.wrapped_geojson != old_geom: