diff --git a/src/c3nav/mapdata/models/locations.py b/src/c3nav/mapdata/models/locations.py index d61a64ce..6917bc19 100644 --- a/src/c3nav/mapdata/models/locations.py +++ b/src/c3nav/mapdata/models/locations.py @@ -85,14 +85,14 @@ class Location(LocationSlug, AccessRestrictionMixin, TitledMixin, models.Model): super().__init__(*args, **kwargs) self.titles = self.titles.copy() - def serialize(self, detailed=True, **kwargs): + def serialize(self, detailed=True, describe_only=False, **kwargs): result = super().serialize(detailed=detailed, **kwargs) if not detailed: - result = OrderedDict(( - (name, result[name]) for name in ('id', 'type', 'slug', 'title', 'subtitle', 'point', 'bounds', - 'locations') - if name in result - )) + if describe_only and not self.can_describe: + fields = ('id', 'on_top_of') + else: + fields = ('id', 'type', 'slug', 'title', 'subtitle', 'point', 'bounds', 'locations', 'on_top_of') + result = OrderedDict(((name, result[name]) for name in fields if name in result)) return result def _serialize(self, **kwargs): diff --git a/src/c3nav/routing/route.py b/src/c3nav/routing/route.py index 03e445f7..49f46253 100644 --- a/src/c3nav/routing/route.py +++ b/src/c3nav/routing/route.py @@ -67,10 +67,10 @@ class RouteItem: result['waytype'] = self.waytype.serialize(detailed=False) if not self.last_item or self.space.pk != self.last_item.space.pk: - result['space'] = self.space.serialize(detailed=False) + result['space'] = self.space.serialize(detailed=False, describe_only=True) if not self.last_item or self.level.pk != self.last_item.level.pk: - result['level'] = self.level.serialize(detailed=False) + result['level'] = self.level.serialize(detailed=False, describe_only=True) return result