From f0709fa409fc029d2ef1191ef7b4ff746b882c8b Mon Sep 17 00:00:00 2001 From: dormantman Date: Wed, 11 Dec 2019 16:16:08 +0300 Subject: [PATCH 1/4] Fixed tag filter type --- apps/tag/views.py | 77 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/apps/tag/views.py b/apps/tag/views.py index db3970e5..dad2582f 100644 --- a/apps/tag/views.py +++ b/apps/tag/views.py @@ -78,9 +78,26 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): result_list = serializer.data query_params = request.query_params - params_type = query_params['type'] + params_type = query_params.get('type') - if params_type == 'restaurant' and 'toque_number__in' in query_params: + week_days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") + flags = ('toque_number', 'wine_region', 'works_noon', 'works_evening', 'works_now') + filter_flags = {flag_name: False for flag_name in flags} + additional_flags = [] + + if params_type == 'restaurant': + additional_flags += ['toque_number', 'works_noon', 'works_evening', 'works_now'] + + elif params_type == 'winery': + additional_flags += ['wine_region'] + + elif params_type == 'artisan': + additional_flags += ['works_now', 'works_at_weekday'] + + for flag_name in additional_flags: + filter_flags[flag_name] = True + + if filter_flags['toque_number']: toques = { "index_name": "toque_number", "label_translated": "Toques", @@ -93,28 +110,29 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): } result_list.append(toques) - if params_type == 'winery' and 'wine_region_id__in' in query_params: - try: - wine_region_id = int(query_params['wine_region_id__in']) + if filter_flags['wine_region']: + wine_region_id = query_params.get('wine_region_id__in') - wine_regions = { - "index_name": "wine_region", - "label_translated": "Wine region", - "param_name": "wine_region_id__in", - "filters": [{ - "id": obj.id, - "index_name": obj.name.lower().replace(' ', '_'), - "label_translated": obj.name - } for obj in WineRegion.objects.filter(id=wine_region_id)] - } + if str(wine_region_id).isdigit(): + queryset = WineRegion.objects.filter(id=int(wine_region_id)) - result_list.append(wine_regions) + else: + queryset = WineRegion.objects.all() - except ValueError: - pass + wine_regions = { + "index_name": "wine_region", + "label_translated": "Wine region", + "param_name": "wine_region_id__in", + "filters": [{ + "id": obj.id, + "index_name": obj.name.lower().replace(' ', '_'), + "label_translated": obj.name + } for obj in queryset] + } - if params_type == 'restaurant' and 'works_noon__in' in query_params: - week_days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") + result_list.append(wine_regions) + + if filter_flags['works_noon']: works_noon = { "index_name": "works_noon", "label_translated": "Open noon", @@ -127,8 +145,8 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): } result_list.append(works_noon) - if params_type == 'restaurant' and 'works_evening__in' in query_params: - week_days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") + if filter_flags['works_evening']: + works_evening = { "index_name": "works_evening", "label_translated": "Open evening", @@ -141,7 +159,7 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): } result_list.append(works_evening) - if params_type in ('restaurant', 'artisan') and 'works_now' in query_params: + if filter_flags['works_now']: works_now = { "index_name": "open_now", "label_translated": "Open now", @@ -150,6 +168,19 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): } result_list.append(works_now) + if filter_flags['works_at_weekday']: + works_at_weekday = { + "index_name": "works_at_weekday", + "label_translated": "Works at weekday", + "param_name": "works_at_weekday__in", + "filters": [{ + "id": weekday, + "index_name": week_days[weekday].lower(), + "label_translated": week_days[weekday] + } for weekday in range(7)] + } + result_list.append(works_at_weekday) + if 'tags_id__in' in query_params: # filtering by params_type and tags id # todo: result_list.append( filtering_data ) From d8e3ad0bb5179c87d3afb85985de7b06ae8c02e1 Mon Sep 17 00:00:00 2001 From: dormantman Date: Wed, 11 Dec 2019 16:21:30 +0300 Subject: [PATCH 2/4] Added works_at_weekday --- apps/tag/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/tag/views.py b/apps/tag/views.py index dad2582f..75472fff 100644 --- a/apps/tag/views.py +++ b/apps/tag/views.py @@ -81,7 +81,7 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): params_type = query_params.get('type') week_days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") - flags = ('toque_number', 'wine_region', 'works_noon', 'works_evening', 'works_now') + 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 = [] From 9f27b0c5d9e8246ae65b644ff724191fcdab615d Mon Sep 17 00:00:00 2001 From: dormantman Date: Wed, 11 Dec 2019 16:27:18 +0300 Subject: [PATCH 3/4] Added different types --- apps/tag/views.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/tag/views.py b/apps/tag/views.py index 75472fff..d506e23f 100644 --- a/apps/tag/views.py +++ b/apps/tag/views.py @@ -79,6 +79,10 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): query_params = request.query_params params_type = query_params.get('type') + if query_params.get('establishment_type'): + params_type = query_params.get('establishment_type') + elif query_params.get('product_type'): + params_type = query_params.get('product_type') week_days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") flags = ('toque_number', 'wine_region', 'works_noon', 'works_evening', 'works_now', 'works_at_weekday') @@ -97,6 +101,8 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): for flag_name in additional_flags: filter_flags[flag_name] = True + print(filter_flags) + if filter_flags['toque_number']: toques = { "index_name": "toque_number", From 0b1b960108b970c02562e15da1bf5e5a14b79ec5 Mon Sep 17 00:00:00 2001 From: dormantman Date: Wed, 11 Dec 2019 16:27:52 +0300 Subject: [PATCH 4/4] Remove excess output --- apps/tag/views.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/tag/views.py b/apps/tag/views.py index d506e23f..e56447bc 100644 --- a/apps/tag/views.py +++ b/apps/tag/views.py @@ -101,8 +101,6 @@ class FiltersTagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): for flag_name in additional_flags: filter_flags[flag_name] = True - print(filter_flags) - if filter_flags['toque_number']: toques = { "index_name": "toque_number",