From f7e4effb9f2091686fda7771590cdad92b4fd67f Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Fri, 13 Dec 2019 16:48:52 +0300 Subject: [PATCH] dynamic filters --- apps/tag/views.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/tag/views.py b/apps/tag/views.py index 3bb33975..40118c2d 100644 --- a/apps/tag/views.py +++ b/apps/tag/views.py @@ -65,7 +65,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): serializer_class = serializers.FiltersTagCategoryBaseSerializer def list(self, request, *args, **kwargs): - queryset = self.filter_queryset(self.get_queryset()) + queryset = self.filter_queryset(self.get_queryset().exclude(public=False)) serializer = self.get_serializer(queryset, many=True) result_list = serializer.data @@ -99,6 +99,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): "index_name": "toque_number", "label_translated": "Toques", "param_name": "toque_number__in", + 'type': 'toque', "filters": [{ "id": toque_id, "index_name": "toque_%d" % toque_id, @@ -134,6 +135,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): "index_name": "works_noon", "label_translated": "Open noon", "param_name": "works_noon__in", + 'type': 'weekday', "filters": [{ "id": weekday, "index_name": week_days[weekday].lower(), @@ -148,6 +150,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): "index_name": "works_evening", "label_translated": "Open evening", "param_name": "works_evening__in", + 'type': 'weekday', "filters": [{ "id": weekday, "index_name": week_days[weekday].lower(), @@ -161,7 +164,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): "index_name": "open_now", "label_translated": "Open now", "param_name": "open_now", - "type": True + "type": 'bool', } result_list.append(works_now) @@ -170,6 +173,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): "index_name": "works_at_weekday", "label_translated": "Works at weekday", "param_name": "works_at_weekday__in", + 'type': 'weekday', "filters": [{ "id": weekday, "index_name": week_days[weekday].lower(), @@ -180,7 +184,16 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): search_view_class = self.define_search_view_by_request(request) facets = search_view_class.as_view({'get': 'list'})(self.mutate_request(self.request)).data['facets'] - return Response(self.remove_empty_filters(result_list, facets)) + result_list = self.remove_empty_filters(result_list, facets) + tag_category = list(filter(lambda x: x.get('index_name') == 'tag', result_list)) + result_list = [category for category in result_list if category.get('index_name') != 'tag'] + if len(tag_category): + tag_category = list(filter(lambda x: x.get('index_name') == 'pop', tag_category[0]['filters'])) + if len(tag_category): # we have Pop tag in our results + tag_category = tag_category[0] + tag_category['param_name'] = 'tags_id__in' + result_list.append(tag_category) + return Response(result_list) @staticmethod def mutate_request(request):