From 90f464de9b7ec00feb5442ebd20def88fe6ad416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Mon, 10 Jul 2017 16:36:52 +0200 Subject: [PATCH] LocationGroup API: filter by category --- src/c3nav/mapdata/api.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/c3nav/mapdata/api.py b/src/c3nav/mapdata/api.py index bccf0d93..a6ce3d8e 100644 --- a/src/c3nav/mapdata/api.py +++ b/src/c3nav/mapdata/api.py @@ -48,6 +48,13 @@ class MapdataViewSet(ReadOnlyModelViewSet): except Space.DoesNotExist: raise NotFound(detail=_('space not found.')) qs = qs.filter(space=space) + if issubclass(qs.model, LocationGroup) and 'category' in request.GET: + kwargs = {('pk' if request.GET['category'].isdigit() else 'name'): request.GET['category']} + try: + category = LocationGroupCategory.objects.get(**kwargs) + except LocationGroupCategory.DoesNotExist: + raise NotFound(detail=_('category not found.')) + qs = qs.filter(category=category) if qs.model == Level and 'on_top_of' in request.GET: if request.GET['on_top_of'] == 'null': qs = qs.filter(on_top_of__isnull=False) @@ -145,6 +152,7 @@ class LocationGroupCategoryViewSet(MapdataViewSet): class LocationGroupViewSet(MapdataViewSet): + """ Add ?category= to filter by category. """ queryset = LocationGroup.objects.all()