From c5056224e07b487ef1f8c07192644136ed6bfd98 Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Fri, 13 Dec 2019 21:19:15 +0300 Subject: [PATCH] sort filters --- apps/tag/views.py | 61 +++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/apps/tag/views.py b/apps/tag/views.py index 40118c2d..2b8eb4ef 100644 --- a/apps/tag/views.py +++ b/apps/tag/views.py @@ -63,6 +63,17 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): """ViewSet for TagCategory model.""" serializer_class = serializers.FiltersTagCategoryBaseSerializer + index_name_to_order = { + 'open_now': 9, + 'works_noon': 8, + 'works_evening': 7, + 'pop': 6, + 'category': 5, + 'toque_number': 4, + 'cuisine': 3, + 'moment': 2, + 'service': 1, + } def list(self, request, *args, **kwargs): queryset = self.filter_queryset(self.get_queryset().exclude(public=False)) @@ -77,7 +88,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): elif query_params.get('product_type'): params_type = query_params.get('product_type') - week_days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") + week_days = tuple(map(_, ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))) flags = ('toque_number', 'wine_region', 'works_noon', 'works_evening', 'works_now', 'works_at_weekday') filter_flags = {flag_name: False for flag_name in flags} additional_flags = [] @@ -94,20 +105,6 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): for flag_name in additional_flags: filter_flags[flag_name] = True - if filter_flags['toque_number']: - toques = { - "index_name": "toque_number", - "label_translated": "Toques", - "param_name": "toque_number__in", - 'type': 'toque', - "filters": [{ - "id": toque_id, - "index_name": "toque_%d" % toque_id, - "label_translated": "Toque %d" % toque_id - } for toque_id in range(6)] - } - result_list.append(toques) - if request.query_params.get('product_type') == ProductType.WINE: wine_region_id = query_params.get('wine_region_id__in') @@ -130,6 +127,24 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): result_list.append(wine_regions) + for item in result_list: + if 'filters' in item: + item['filters'].sort(key=lambda x: x.get('label_translated')) + + if filter_flags['toque_number']: + toques = { + "index_name": "toque_number", + "label_translated": "Toques", + "param_name": "toque_number__in", + 'type': 'toque', + "filters": [{ + "id": toque_id, + "index_name": "toque_%d" % toque_id, + "label_translated": "Toque %d" % toque_id + } for toque_id in range(6)] + } + result_list.append(toques) + if filter_flags['works_noon']: works_noon = { "index_name": "works_noon", @@ -193,6 +208,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): tag_category = tag_category[0] tag_category['param_name'] = 'tags_id__in' result_list.append(tag_category) + result_list.sort(key=lambda x: self.index_name_to_order.get(x.get('index_name'), 0), reverse=True) return Response(result_list) @staticmethod @@ -230,9 +246,11 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): if facets.get('_filter_tag'): tags_to_preserve = list(map(lambda el: el['key'], facets['_filter_tag']['tag']['buckets'])) if facets.get('_filter_wine_colors'): - wine_colors_to_preserve = list(map(lambda el: el['key'], facets['_filter_wine_colors']['wine_colors']['buckets'])) + wine_colors_to_preserve = list( + map(lambda el: el['key'], facets['_filter_wine_colors']['wine_colors']['buckets'])) if facets.get('_filter_wine_region_id'): - wine_regions_to_preserve = list(map(lambda el: el['key'], facets['_filter_wine_region_id']['wine_region_id']['buckets'])) + wine_regions_to_preserve = list( + map(lambda el: el['key'], facets['_filter_wine_region_id']['wine_region_id']['buckets'])) if facets.get('_filter_toque_number'): toque_numbers = list(map(lambda el: el['key'], facets['_filter_toque_number']['toque_number']['buckets'])) if facets.get('_filter_works_noon'): @@ -240,7 +258,8 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): if facets.get('_filter_works_evening'): works_evening = list(map(lambda el: el['key'], facets['_filter_works_evening']['works_evening']['buckets'])) if facets.get('_filter_works_at_weekday'): - works_at_weekday = list(map(lambda el: el['key'], facets['_filter_works_at_weekday']['works_at_weekday']['buckets'])) + works_at_weekday = list( + map(lambda el: el['key'], facets['_filter_works_at_weekday']['works_at_weekday']['buckets'])) if facets.get('_filter_works_now'): works_now = list(map(lambda el: el['key'], facets['_filter_works_now']['works_now']['buckets'])) @@ -250,9 +269,11 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet): if param_name == 'tags_id__in': category['filters'] = list(filter(lambda tag: tag['id'] in tags_to_preserve, category['filters'])) elif param_name == 'wine_colors_id__in': - category['filters'] = list(filter(lambda tag: tag['id'] in wine_colors_to_preserve, category['filters'])) + category['filters'] = list( + filter(lambda tag: tag['id'] in wine_colors_to_preserve, category['filters'])) elif param_name == 'wine_region_id__in': - category['filters'] = list(filter(lambda tag: tag['id'] in wine_regions_to_preserve, category['filters'])) + category['filters'] = list( + filter(lambda tag: tag['id'] in wine_regions_to_preserve, category['filters'])) elif param_name == 'toque_number__in': category['filters'] = list(filter(lambda tag: tag['id'] in toque_numbers, category['filters'])) elif param_name == 'works_noon__in':