gault-millau/apps/news/views/common.py
2019-08-16 15:24:26 +03:00

57 lines
1.7 KiB
Python

from rest_framework import generics, permissions
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._get_locale(request=self.request))
class NewsList(NewsViewMixin, JWTListAPIView):
"""News list view."""
permission_classes = (permissions.AllowAny, )
serializer_class = serializers.NewsSerializer
class NewsCreate(generics.CreateAPIView):
"""News list view."""
queryset = News.objects.all()
permission_classes = (permissions.IsAuthenticated, )
serializer_class = serializers.NewsCreateUpdateSerializer
class NewsDetail(generics.RetrieveAPIView):
"""News detail view."""
queryset = News.objects.all()
permission_classes = (permissions.AllowAny, )
serializer_class = serializers.NewsSerializer
class NewsDelete(generics.DestroyAPIView):
"""News delete view."""
queryset = News.objects.all()
permission_classes = (permissions.IsAuthenticated, )
class NewsUpdate(generics.UpdateAPIView):
"""News update view."""
queryset = News.objects.all()
permission_classes = (permissions.IsAuthenticated, )
serializer_class = serializers.NewsCreateUpdateSerializer
class NewsTypeList(generics.ListAPIView):
"""NewsType list view."""
serializer_class = serializers.NewsTypeSerializer
permission_classes = (permissions.AllowAny, )
pagination_class = None
queryset = NewsType.objects.all()