From 798e58202c60d5158d396bcaf0daef5d100251ee Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Wed, 16 Oct 2019 14:11:07 +0300 Subject: [PATCH] Return hardcode for chosen tags --- apps/main/views/common.py | 3 +++ apps/tag/filters.py | 14 ++++++++++++++ apps/tag/views.py | 17 +++++++++++++++++ project/settings/base.py | 6 ++++++ 4 files changed, 40 insertions(+) diff --git a/apps/main/views/common.py b/apps/main/views/common.py index 0c2ef6d4..15f89510 100644 --- a/apps/main/views/common.py +++ b/apps/main/views/common.py @@ -70,6 +70,9 @@ class CarouselListView(generics.ListAPIView): def get_queryset(self): country_code = self.request.country_code + if hasattr(settings, 'CAROUSEL_ITEMS') and country_code in ['www', 'main']: + qs = models.Carousel.objects.filter(id__in=settings.CAROUSEL_ITEMS) + return qs qs = models.Carousel.objects.is_parsed().active() if country_code: qs = qs.by_country_code(country_code) diff --git a/apps/tag/filters.py b/apps/tag/filters.py index c1d6874f..0b1fb829 100644 --- a/apps/tag/filters.py +++ b/apps/tag/filters.py @@ -52,3 +52,17 @@ class TagsFilterSet(TagsBaseFilterSet): model = models.Tag fields = ('type',) + + # TMP TODO remove it later + # Временный хардкод для демонстрации 4 ноября, потом удалить! + def filter_by_type(self, queryset, name, value): + """ Overrides base filter. Temporary decision""" + if not (settings.NEWS_CHOSEN_TAGS and settings.ESTABLISHMENT_CHOSEN_TAGS): + return super().filter_by_type(queryset, name, value) + queryset = models.Tag.objects + if self.NEWS in value: + queryset = queryset.for_news().filter(value__in=settings.NEWS_CHOSEN_TAGS).distinct('value') + if self.ESTABLISHMENT in value: + queryset = queryset.for_establishments().filter(value__in=settings.ESTABLISHMENT_CHOSEN_TAGS).distinct( + 'value') + return queryset diff --git a/apps/tag/views.py b/apps/tag/views.py index c55834e0..4a2f2613 100644 --- a/apps/tag/views.py +++ b/apps/tag/views.py @@ -23,6 +23,23 @@ class ChosenTagsView(generics.ListAPIView, viewsets.GenericViewSet): .filter(id__in=result_tags_ids) \ .order_by_priority() + def list(self, request, *args, **kwargs): + # TMP TODO remove it later + # Временный хардкод для демонстрации > 15 ноября, потом удалить! + queryset = self.filter_queryset(self.get_queryset()) + + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.get_serializer(page, many=True) + return self.get_paginated_response(serializer.data) + + serializer = self.get_serializer(queryset, many=True) + result_list = serializer.data + if request.query_params.get('type') and (settings.ESTABLISHMENT_CHOSEN_TAGS or settings.NEWS_CHOSEN_TAGS): + ordered_list = settings.ESTABLISHMENT_CHOSEN_TAGS if request.query_params.get('type') == 'establishment' else settings.NEWS_CHOSEN_TAGS + result_list = sorted(result_list, key=lambda x: ordered_list.index(x['index_name'])) + return Response(result_list) + # User`s views & viewsets class TagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): diff --git a/project/settings/base.py b/project/settings/base.py index 5e3017c7..85c7960f 100644 --- a/project/settings/base.py +++ b/project/settings/base.py @@ -487,3 +487,9 @@ PHONENUMBER_DB_FORMAT = 'NATIONAL' PHONENUMBER_DEFAULT_REGION = "FR" FALLBACK_LOCALE = 'en-GB' + +# TMP TODO remove it later +# Временный хардкод для демонстрации > 15 ноября, потом удалить! +CAROUSEL_ITEMS = [230, 231, 232] +ESTABLISHMENT_CHOSEN_TAGS = ['gastronomic', 'en_vogue', 'terrace', 'streetfood', 'business', 'bar_cocktail', 'brunch', 'pop'] +NEWS_CHOSEN_TAGS = ['eat', 'drink', 'cook', 'style', 'international', 'event', 'partnership']