Temp crunch for chosen tags

This commit is contained in:
Kuroshini 2019-10-16 14:11:07 +03:00
parent 9d3e278763
commit b8fe50f806
3 changed files with 40 additions and 1 deletions

View File

@ -1,6 +1,7 @@
"""Tag app filters."""
from django_filters import rest_framework as filters
from establishment.models import EstablishmentType
from django.conf import settings
from tag import models
class TagsBaseFilterSet(filters.FilterSet):
@ -53,3 +54,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)
if self.ESTABLISHMENT in value:
queryset = queryset.for_establishments().filter(value__in=settings.ESTABLISHMENT_CHOSEN_TAGS)
return queryset

View File

@ -1,9 +1,11 @@
"""Tag views."""
from django.conf import settings
from rest_framework import permissions
from rest_framework import viewsets, mixins, status, generics
from rest_framework.decorators import action
from rest_framework.response import Response
from tag import filters, models, serializers
from rest_framework import permissions
class ChosenTagsView(generics.ListAPIView, viewsets.GenericViewSet):
@ -21,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
# Временный хардкод для демонстрации 4 ноября, потом удалить!
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):

View File

@ -490,3 +490,8 @@ PHONENUMBER_DB_FORMAT = 'NATIONAL'
PHONENUMBER_DEFAULT_REGION = "FR"
FALLBACK_LOCALE = 'en-GB'
# TMP TODO remove it later
# Временный хардкод для демонстрации 4 ноября, потом удалить!
ESTABLISHMENT_CHOSEN_TAGS = ['gastronomic', 'en_vogue', 'terrace', 'streetfood', 'business', 'bar_cocktail', 'brunch', 'pop']
NEWS_CHOSEN_TAGS = ['test']