gault-millau/apps/news/views/common.py
2019-08-28 18:30:35 +03:00

51 lines
1.7 KiB
Python

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.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()