all mapdata models use new_serialize now
This commit is contained in:
parent
40f19afc28
commit
05890de06a
7 changed files with 4 additions and 110 deletions
|
@ -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([
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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, (
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue