39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
"""News app common app."""
|
|
from rest_framework import generics, permissions
|
|
|
|
from news import filters, models
|
|
from news.serializers import common as serializers
|
|
from utils.views import JWTGenericViewMixin
|
|
|
|
|
|
class NewsMixin:
|
|
"""News mixin."""
|
|
|
|
permission_classes = (permissions.AllowAny, )
|
|
serializer_class = serializers.NewsSerializer
|
|
|
|
def get_queryset(self, *args, **kwargs):
|
|
"""Override get_queryset method"""
|
|
return models.News.objects.published() \
|
|
.by_country_code(code=self.request.country_code) \
|
|
.order_by('-is_highlighted', '-created')
|
|
|
|
|
|
class NewsListView(NewsMixin, generics.ListAPIView):
|
|
"""News list view."""
|
|
|
|
filter_class = filters.NewsListFilterSet
|
|
|
|
|
|
class NewsDetailView(NewsMixin, JWTGenericViewMixin, generics.RetrieveAPIView):
|
|
"""News detail view."""
|
|
|
|
|
|
class NewsTypeListView(generics.ListAPIView):
|
|
"""NewsType list view."""
|
|
|
|
serializer_class = serializers.NewsTypeSerializer
|
|
permission_classes = (permissions.AllowAny, )
|
|
pagination_class = None
|
|
queryset = models.NewsType.objects.all()
|