From 05890de06add72f896e62a3599642f5c8dbb6be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Wed, 4 Dec 2024 12:20:17 +0100 Subject: [PATCH] all mapdata models use new_serialize now --- src/c3nav/mapdata/models/access.py | 5 ----- src/c3nav/mapdata/models/base.py | 26 ---------------------- src/c3nav/mapdata/models/geometry/base.py | 13 ----------- src/c3nav/mapdata/models/geometry/level.py | 6 ----- src/c3nav/mapdata/models/geometry/space.py | 17 -------------- src/c3nav/mapdata/models/locations.py | 26 ---------------------- src/c3nav/mapdata/models/overlay.py | 21 ++++------------- 7 files changed, 4 insertions(+), 110 deletions(-) diff --git a/src/c3nav/mapdata/models/access.py b/src/c3nav/mapdata/models/access.py index 975b1ae0..d3ff1f38 100644 --- a/src/c3nav/mapdata/models/access.py +++ b/src/c3nav/mapdata/models/access.py @@ -408,11 +408,6 @@ class AccessRestrictionMixin(SerializableMixin, models.Model): class Meta: abstract = True - def _serialize(self, **kwargs): - result = super()._serialize(**kwargs) - result['access_restriction'] = self.access_restriction_id - return result - def details_display(self, **kwargs): result = super().details_display(**kwargs) result['display'].extend([ diff --git a/src/c3nav/mapdata/models/base.py b/src/c3nav/mapdata/models/base.py index d526c8a1..cf551cdc 100644 --- a/src/c3nav/mapdata/models/base.py +++ b/src/c3nav/mapdata/models/base.py @@ -16,9 +16,6 @@ class SerializableMixin(models.Model): class Meta: abstract = True - def serialize(self, **kwargs): - return self._serialize(**kwargs) - @classmethod def serialize_type(cls, **kwargs): return OrderedDict(( @@ -28,13 +25,6 @@ class SerializableMixin(models.Model): ('title_plural', str(cls._meta.verbose_name_plural)), )) - def _serialize(self, include_type=False, **kwargs): - result = {} - if include_type: - result['type'] = self.__class__.__name__.lower() - result['id'] = self.pk - return result - def details_display(self, **kwargs): return { 'id': self.pk, @@ -66,17 +56,6 @@ class TitledMixin(SerializableMixin, models.Model): class Meta: abstract = True - def serialize(self, **kwargs): - result = super().serialize(**kwargs) - return result - - def _serialize(self, detailed=True, **kwargs): - result = super()._serialize(detailed=detailed, **kwargs) - if detailed: - result['titles'] = self.titles - result['title'] = self.title - return result - @property def other_titles(self): return tuple(title for lang, title in self.titles.items() if lang != get_language()) @@ -114,11 +93,6 @@ class BoundsMixin(SerializableMixin, models.Model): cache.set(cache_key, result, 900) return result - def _serialize(self, level=True, **kwargs): - result = super()._serialize(**kwargs) - result['bounds'] = self.bounds - return result - @property def bounds(self): # noinspection PyTypeChecker diff --git a/src/c3nav/mapdata/models/geometry/base.py b/src/c3nav/mapdata/models/geometry/base.py index 2d717ea8..1a20abe2 100644 --- a/src/c3nav/mapdata/models/geometry/base.py +++ b/src/c3nav/mapdata/models/geometry/base.py @@ -82,19 +82,6 @@ class GeometryMixin(SerializableMixin): raise ValueError return good_representative_point(self.geometry) - def _serialize(self, geometry=True, simple_geometry=False, **kwargs): - result = super()._serialize(simple_geometry=simple_geometry, **kwargs) - if geometry and "geometry" not in self.get_deferred_fields(): - result['geometry'] = format_geojson(smart_mapping(self.geometry), rounded=False) - if simple_geometry and "geometry" not in self.get_deferred_fields(): - result['point'] = (self.level_id, ) + tuple(round(i, 2) for i in self.point.coords[0]) - if not isinstance(self.geometry, Point): - self.geometry: BaseGeometry - minx, miny, maxx, maxy = self.geometry.bounds - result['bounds'] = ((int(math.floor(minx)), int(math.floor(miny))), - (int(math.ceil(maxx)), int(math.ceil(maxy)))) - return result - def details_display(self, detailed_geometry=True, **kwargs): result = super().details_display(**kwargs) result['geometry'] = self.get_geometry(detailed_geometry=detailed_geometry) diff --git a/src/c3nav/mapdata/models/geometry/level.py b/src/c3nav/mapdata/models/geometry/level.py index ba1c57d0..da7169fb 100644 --- a/src/c3nav/mapdata/models/geometry/level.py +++ b/src/c3nav/mapdata/models/geometry/level.py @@ -52,12 +52,6 @@ class LevelGeometryMixin(GeometryMixin): result['opacity'] = self.opacity return result - def _serialize(self, level=True, **kwargs): - result = super()._serialize(**kwargs) - if level: - result['level'] = self.level_id - return result - def details_display(self, **kwargs): result = super().details_display(**kwargs) result['display'].insert(3, ( diff --git a/src/c3nav/mapdata/models/geometry/space.py b/src/c3nav/mapdata/models/geometry/space.py index 00bfbb8e..03f93c00 100644 --- a/src/c3nav/mapdata/models/geometry/space.py +++ b/src/c3nav/mapdata/models/geometry/space.py @@ -50,12 +50,6 @@ class SpaceGeometryMixin(GeometryMixin): result['opacity'] = self.opacity return result - def _serialize(self, space=True, **kwargs): - result = super()._serialize(**kwargs) - if space: - result['space'] = self.space_id - return result - @property def subtitle(self): base_subtitle = super().subtitle @@ -280,17 +274,6 @@ class LineObstacle(SpaceGeometryMixin, models.Model): result['color'] = color return result - def _serialize(self, geometry=True, **kwargs): - result = super()._serialize(geometry=geometry, **kwargs) - result['width'] = float(str(self.width)) - result['height'] = float(str(self.height)) - result['altitude'] = float(str(self.altitude)) - from c3nav.mapdata.render.theme import ColorManager - result['color'] = self.get_color(ColorManager.for_theme(None)) - if geometry: - result['buffered_geometry'] = format_geojson(mapping(self.buffered_geometry)) - return result - @property def color(self): from c3nav.mapdata.render.theme import ColorManager diff --git a/src/c3nav/mapdata/models/locations.py b/src/c3nav/mapdata/models/locations.py index 4feaa2c6..4b2b5fbe 100644 --- a/src/c3nav/mapdata/models/locations.py +++ b/src/c3nav/mapdata/models/locations.py @@ -85,13 +85,6 @@ class LocationSlug(SerializableMixin, models.Model): def effective_slug(self): return self.slug - def _serialize(self, **kwargs): - result = super()._serialize(**kwargs) - result["locationtype"] = self.__class__.__name__.lower() - result['slug'] = self.slug - result['effective_slug'] = self.effective_slug - return result - def details_display(self, **kwargs): result = super().details_display(**kwargs) result['display'].insert(2, (_('Slug'), self.effective_slug)) @@ -186,25 +179,6 @@ class SpecificLocation(Location, models.Model): class Meta: abstract = True - def _serialize(self, detailed=True, **kwargs): - result = super()._serialize(detailed=detailed, **kwargs) - if grid.enabled: - grid_square = self.grid_square - if grid_square is not None: - result['grid_square'] = grid_square or None - if detailed: - result["groups"] = [g.pk for g in self.groups.all()] - result['groups_by_category'] = self.groups_by_category - - result["label_settings"] = self.label_settings_id - effective_label_settings = self.effective_label_settings - if effective_label_settings: - result['effective_label_settings'] = effective_label_settings.serialize(detailed=False) - if self.label_overrides: - # todo: what if only one language is set? - result['label_override'] = self.label_override - return result - @property def effective_label_settings(self): if self.label_settings: diff --git a/src/c3nav/mapdata/models/overlay.py b/src/c3nav/mapdata/models/overlay.py index 8da3c3bc..a858144b 100644 --- a/src/c3nav/mapdata/models/overlay.py +++ b/src/c3nav/mapdata/models/overlay.py @@ -12,6 +12,8 @@ from c3nav.mapdata.utils.json import format_geojson class DataOverlay(TitledMixin, models.Model): + new_serialize = True + description = models.TextField(blank=True, verbose_name=_('Description')) stroke_color = models.TextField(blank=True, null=True, verbose_name=_('default stroke color')) stroke_width = models.FloatField(blank=True, null=True, verbose_name=_('default stroke width')) @@ -28,6 +30,8 @@ class DataOverlay(TitledMixin, models.Model): class DataOverlayFeature(TitledMixin, GeometryMixin, models.Model): + new_serialize = True + overlay = models.ForeignKey('mapdata.DataOverlay', on_delete=models.CASCADE, verbose_name=_('Overlay'), related_name='features') geometry = GeometryField() level = models.ForeignKey('mapdata.Level', on_delete=models.CASCADE, verbose_name=_('level'), related_name='data_overlay_features') @@ -64,22 +68,5 @@ class DataOverlayFeature(TitledMixin, GeometryMixin, models.Model): def get_geojson_key(self): return 'dataoverlayfeature', self.id - def _serialize(self, **kwargs): - result = super()._serialize(**kwargs) - result.update({ - 'level_id': self.level_id, - 'stroke_color': self.stroke_color, - 'stroke_width': self.stroke_width, - 'fill_color': self.fill_color, - 'show_label': self.show_label, - 'show_geometry': self.show_geometry, - 'interactive': self.interactive, - 'point_icon': self.point_icon, - 'external_url': self.external_url, - 'extra_data': self.extra_data, - }) - result['level_id'] = self.level_id - return result - class Meta: default_related_name = "dataoverlayfeatures"