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