From 6eaf087f71718fd6c3ae6cdf27fab7435b679470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Fri, 1 Dec 2023 01:56:23 +0100 Subject: [PATCH] update some dependencies --- src/c3nav/mapdata/fields.py | 14 ++++---------- src/c3nav/mapdata/models/geometry/space.py | 3 ++- src/c3nav/mapdata/utils/geometry.py | 3 --- src/requirements/production.txt | 6 +++--- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/c3nav/mapdata/fields.py b/src/c3nav/mapdata/fields.py index e0e32b66..f16f895d 100644 --- a/src/c3nav/mapdata/fields.py +++ b/src/c3nav/mapdata/fields.py @@ -56,8 +56,8 @@ class GeometryField(models.JSONField): if value is None or value == '': return None if isinstance(value, str): - # todo: this is all too complex, why do we need this? - value = json.loads(value) + raise ValueError('got a string in GeometryField.to_python()') + # todo: not a todo, hopefully try: geometry = shape(value) except Exception: @@ -107,23 +107,17 @@ class GeometryField(models.JSONField): return format_geojson(mapping(value), rounded=False) if as_json else value - def get_db_prep_value(self, value, connection, prepared=False): - return super().get_db_prep_value(mapping(value), connection, prepared=prepared) - def get_prep_value(self, value): if value is None: return None - if isinstance(value, dict): - # todo: this should also not be needed but whatever - value = shape(value) 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)) + return self.get_final_value(value, as_json=True) def value_to_string(self, obj): value = self.value_from_object(obj) - return self.get_prep_value(value) + return json.dumps(self.get_prep_value(value)) class JSONField(models.TextField): diff --git a/src/c3nav/mapdata/models/geometry/space.py b/src/c3nav/mapdata/models/geometry/space.py index 00a333ba..45b8e30c 100644 --- a/src/c3nav/mapdata/models/geometry/space.py +++ b/src/c3nav/mapdata/models/geometry/space.py @@ -18,6 +18,7 @@ from c3nav.mapdata.models.base import SerializableMixin from c3nav.mapdata.models.geometry.base import GeometryMixin from c3nav.mapdata.models.locations import SpecificLocation from c3nav.mapdata.utils.cache.changes import changed_geometries +from c3nav.mapdata.utils.geometry import unwrap_geom from c3nav.mapdata.utils.json import format_geojson @@ -97,7 +98,7 @@ class SpaceGeometryMixin(GeometryMixin): def register_delete(self): space = self.space - changed_geometries.register(space.level_id, space.geometry.intersection(self.geometry)) + changed_geometries.register(space.level_id, space.geometry.intersection(unwrap_geom(self.geometry))) def save(self, *args, **kwargs): self.register_change() diff --git a/src/c3nav/mapdata/utils/geometry.py b/src/c3nav/mapdata/utils/geometry.py index 6f037b4f..83ef2dc8 100644 --- a/src/c3nav/mapdata/utils/geometry.py +++ b/src/c3nav/mapdata/utils/geometry.py @@ -37,9 +37,6 @@ class WrappedGeometry(): wrapped_geojson = None def __init__(self, geojson): - if isinstance(geojson, str): - # todo: this should not be needed unless the database is fucked - geojson = json.loads(geojson) self.wrapped_geojson = geojson @cached_property diff --git a/src/requirements/production.txt b/src/requirements/production.txt index 9f28929f..7c00a862 100644 --- a/src/requirements/production.txt +++ b/src/requirements/production.txt @@ -1,4 +1,4 @@ -Django==4.2.3 +Django==4.2.7 django-bootstrap3==23.4 django-compressor==4.4 csscompressor==0.9.5 @@ -7,12 +7,12 @@ django-ninja==1.0.1 django-filter==23.4 django-environ==0.11.2 shapely==2.0.2 -pybind11==2.10.4 +pybind11==2.11.1 MeshPy==2022.1.3 # rtree==0.9.1 celery==5.3.6 requests==2.31.0 -Pillow==10.0.1 +Pillow==10.1.0 qrcode==7.4.2 matplotlib==3.8.2 scipy==1.11.4