51 lines
1.7 KiB
Python
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()
|