From c4b3932e9b06f4f3896a686d8f296de194805bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 22 Jun 2017 19:57:49 +0200 Subject: [PATCH] correctly filter on api /locations/ --- src/c3nav/mapdata/api.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/c3nav/mapdata/api.py b/src/c3nav/mapdata/api.py index de9b039c..a7eda918 100644 --- a/src/c3nav/mapdata/api.py +++ b/src/c3nav/mapdata/api.py @@ -157,8 +157,13 @@ class LocationViewSet(RetrieveModelMixin, GenericViewSet): detailed = 'detailed' in request.GET queryset = self.get_queryset().order_by('id') - queryset = queryset.filter(reduce(operator.or_, (Q(**{model._meta.default_related_name+'__isnull': False}) - for model in get_submodels(Location)))) + conditions = [] + for model in get_submodels(Location): + conditions.append(Q(**{model._meta.default_related_name+'__isnull': False}) & + (Q(**{model._meta.default_related_name + '__can_search': True}) | + Q(**{model._meta.default_related_name + '__can_describe': True}))) + queryset = queryset.filter(reduce(operator.or_, conditions)) + if detailed: for model in get_submodels(Location): if model == LocationGroup: