all mapdata models use new_serialize now

This commit is contained in:
Laura Klünder 2024-12-04 12:20:17 +01:00
parent 40f19afc28
commit 05890de06a
7 changed files with 4 additions and 110 deletions

View file

@ -408,11 +408,6 @@ class AccessRestrictionMixin(SerializableMixin, models.Model):
class Meta: class Meta:
abstract = True abstract = True
def _serialize(self, **kwargs):
result = super()._serialize(**kwargs)
result['access_restriction'] = self.access_restriction_id
return result
def details_display(self, **kwargs): def details_display(self, **kwargs):
result = super().details_display(**kwargs) result = super().details_display(**kwargs)
result['display'].extend([ result['display'].extend([

View file

@ -16,9 +16,6 @@ class SerializableMixin(models.Model):
class Meta: class Meta:
abstract = True abstract = True
def serialize(self, **kwargs):
return self._serialize(**kwargs)
@classmethod @classmethod
def serialize_type(cls, **kwargs): def serialize_type(cls, **kwargs):
return OrderedDict(( return OrderedDict((
@ -28,13 +25,6 @@ class SerializableMixin(models.Model):
('title_plural', str(cls._meta.verbose_name_plural)), ('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): def details_display(self, **kwargs):
return { return {
'id': self.pk, 'id': self.pk,
@ -66,17 +56,6 @@ class TitledMixin(SerializableMixin, models.Model):
class Meta: class Meta:
abstract = True 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 @property
def other_titles(self): def other_titles(self):
return tuple(title for lang, title in self.titles.items() if lang != get_language()) 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) cache.set(cache_key, result, 900)
return result return result
def _serialize(self, level=True, **kwargs):
result = super()._serialize(**kwargs)
result['bounds'] = self.bounds
return result
@property @property
def bounds(self): def bounds(self):
# noinspection PyTypeChecker # noinspection PyTypeChecker

View file

@ -82,19 +82,6 @@ class GeometryMixin(SerializableMixin):
raise ValueError raise ValueError
return good_representative_point(self.geometry) 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): def details_display(self, detailed_geometry=True, **kwargs):
result = super().details_display(**kwargs) result = super().details_display(**kwargs)
result['geometry'] = self.get_geometry(detailed_geometry=detailed_geometry) result['geometry'] = self.get_geometry(detailed_geometry=detailed_geometry)

View file

@ -52,12 +52,6 @@ class LevelGeometryMixin(GeometryMixin):
result['opacity'] = self.opacity result['opacity'] = self.opacity
return result 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): def details_display(self, **kwargs):
result = super().details_display(**kwargs) result = super().details_display(**kwargs)
result['display'].insert(3, ( result['display'].insert(3, (

View file

@ -50,12 +50,6 @@ class SpaceGeometryMixin(GeometryMixin):
result['opacity'] = self.opacity result['opacity'] = self.opacity
return result return result
def _serialize(self, space=True, **kwargs):
result = super()._serialize(**kwargs)
if space:
result['space'] = self.space_id
return result
@property @property
def subtitle(self): def subtitle(self):
base_subtitle = super().subtitle base_subtitle = super().subtitle
@ -280,17 +274,6 @@ class LineObstacle(SpaceGeometryMixin, models.Model):
result['color'] = color result['color'] = color
return result 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 @property
def color(self): def color(self):
from c3nav.mapdata.render.theme import ColorManager from c3nav.mapdata.render.theme import ColorManager

View file

@ -85,13 +85,6 @@ class LocationSlug(SerializableMixin, models.Model):
def effective_slug(self): def effective_slug(self):
return self.slug 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): def details_display(self, **kwargs):
result = super().details_display(**kwargs) result = super().details_display(**kwargs)
result['display'].insert(2, (_('Slug'), self.effective_slug)) result['display'].insert(2, (_('Slug'), self.effective_slug))
@ -186,25 +179,6 @@ class SpecificLocation(Location, models.Model):
class Meta: class Meta:
abstract = True 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 @property
def effective_label_settings(self): def effective_label_settings(self):
if self.label_settings: if self.label_settings:

View file

@ -12,6 +12,8 @@ from c3nav.mapdata.utils.json import format_geojson
class DataOverlay(TitledMixin, models.Model): class DataOverlay(TitledMixin, models.Model):
new_serialize = True
description = models.TextField(blank=True, verbose_name=_('Description')) description = models.TextField(blank=True, verbose_name=_('Description'))
stroke_color = models.TextField(blank=True, null=True, verbose_name=_('default stroke color')) 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')) 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): class DataOverlayFeature(TitledMixin, GeometryMixin, models.Model):
new_serialize = True
overlay = models.ForeignKey('mapdata.DataOverlay', on_delete=models.CASCADE, verbose_name=_('Overlay'), related_name='features') overlay = models.ForeignKey('mapdata.DataOverlay', on_delete=models.CASCADE, verbose_name=_('Overlay'), related_name='features')
geometry = GeometryField() geometry = GeometryField()
level = models.ForeignKey('mapdata.Level', on_delete=models.CASCADE, verbose_name=_('level'), related_name='data_overlay_features') 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): def get_geojson_key(self):
return 'dataoverlayfeature', self.id 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: class Meta:
default_related_name = "dataoverlayfeatures" default_related_name = "dataoverlayfeatures"