from rest_framework import generics, permissions from news import filters from news.models import News, NewsType from news.serializers import common as serializers from utils.views import (JWTGenericViewMixin, JWTListAPIView) # Mixins class NewsViewMixin(JWTGenericViewMixin): """View mixin for News model""" def get_queryset(self, *args, **kwargs): """Override get_queryset method""" return News.objects.annotate_localized_fields(locale=self.request.locale) class NewsListView(NewsViewMixin, JWTListAPIView): """News list view.""" permission_classes = (permissions.AllowAny, ) serializer_class = serializers.NewsSerializer filter_class = filters.NewsListFilterSet def get_queryset(self, *args, **kwargs): """Override get_queryset method""" return News.objects.annotate_localized_fields(locale=self.request.locale)\ .published()\ .by_country_code(code=self.request.country_code)\ .order_by('-is_highlighted', '-created') # class NewsCreateView(generics.CreateAPIView): # """News list view.""" # queryset = News.objects.all() # permission_classes = (permissions.IsAuthenticated, ) # serializer_class = serializers.NewsCreateUpdateSerializer class NewsDetailView(NewsViewMixin, generics.RetrieveAPIView): """News detail view.""" permission_classes = (permissions.IsAuthenticatedOrReadOnly, ) serializer_class = serializers.NewsSerializer class NewsTypeListView(generics.ListAPIView): """NewsType list view.""" serializer_class = serializers.NewsTypeSerializer permission_classes = (permissions.AllowAny, ) pagination_class = None queryset = NewsType.objects.all()