48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
from rest_framework import generics, permissions
|
|
from news.models import News
|
|
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 |