From 1d10563f5f6f69788d669b12159f928e3eee1f55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Wed, 20 Dec 2017 18:16:58 +0100 Subject: [PATCH] hide locations on hidden levels/spaces --- src/c3nav/mapdata/utils/locations.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/c3nav/mapdata/utils/locations.py b/src/c3nav/mapdata/utils/locations.py index 3c9e3230..ccfc40f9 100644 --- a/src/c3nav/mapdata/utils/locations.py +++ b/src/c3nav/mapdata/utils/locations.py @@ -61,16 +61,34 @@ def locations_for_request(request) -> Mapping[int, LocationSlug]: group.locations.append(obj) # add levels to spaces + remove_pks = set() levels = {pk: obj for pk, obj in locations.items() if isinstance(obj, Level)} - for obj in locations.values(): + for pk, obj in locations.keys(): if isinstance(obj, LevelGeometryMixin): - obj._level_cache = levels.get(obj.level_id, None) + level = levels.get(obj.level_id, None) + if level is None: + remove_pks.add(pk) + continue + obj._level_cache = level + + # hide spaces on hidden levels + for pk in remove_pks: + locations.pop(pk) # add spaces to areas and POIs + remove_pks = set() spaces = {pk: obj for pk, obj in locations.items() if isinstance(obj, Space)} for obj in locations.values(): if isinstance(obj, SpaceGeometryMixin): - obj._space_cache = spaces.get(obj.space_id, None) + space = spaces.get(obj.space_id, None) + if space is None: + remove_pks.add(pk) + continue + obj._space_cache = space + + # hide locations on hidden spaces + for pk in remove_pks: + locations.pop(pk) # add targets to LocationRedirects levels = {pk: obj for pk, obj in locations.items() if isinstance(obj, Level)}