sort filters
This commit is contained in:
parent
f7e4effb9f
commit
c5056224e0
|
|
@ -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':
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user