dynamic filters

This commit is contained in:
Kuroshini 2019-12-13 16:48:52 +03:00
parent 6e72c7c0e4
commit f7e4effb9f

View File

@ -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):