sort filters

This commit is contained in:
Kuroshini 2019-12-13 21:19:15 +03:00
parent f7e4effb9f
commit c5056224e0

View File

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