1- # Create your views here.
1+ from rest_framework import viewsets
2+ from rest_framework .permissions import AllowAny
3+ from rest_framework .response import Response
4+ from rest_framework_simplejwt .authentication import JWTAuthentication
5+
6+ from auth .auth import IsAdmin , IsSuperUser
7+ from news .models import News
8+ from news .serializers .serializers import NewsSerializer
9+
10+
11+ class NewsViewSet (viewsets .ModelViewSet ):
12+ queryset = News .objects .all ()
13+ serializer_class = NewsSerializer
14+ authentication_classes = [JWTAuthentication ]
15+ permission_classes = [IsSuperUser ]
16+
17+ def list (self , request , * args , ** kwargs ):
18+ if request .query_params .get ('id' ):
19+ news_id = request .query_params .get ('id' )
20+ try :
21+ news_item = News .objects .get (id = news_id )
22+ except News .DoesNotExist :
23+ return Response ({'error' : 'News item not found' }, status = 404 )
24+
25+ serializer = self .get_serializer (news_item )
26+ return Response (serializer .data )
27+
28+ queryset = self .get_queryset ()
29+ serializer = self .get_serializer (queryset , many = True )
30+
31+ return Response (serializer .data )
32+
33+ class PublishNewsViewSet (viewsets .ModelViewSet ):
34+ queryset = News .objects .all ()
35+ serializer_class = NewsSerializer
36+ authentication_classes = [JWTAuthentication ]
37+ permission_classes = [AllowAny ]
38+
39+ def list (self , request , * args , ** kwargs ):
40+ if request .query_params .get ('id' ):
41+ news_id = request .query_params .get ('id' )
42+ try :
43+ news_item = News .objects .get (id = news_id , published = True )
44+ except News .DoesNotExist :
45+ return Response ({'error' : 'News item not found' }, status = 404 )
46+
47+ serializer = self .get_serializer (news_item )
48+ return Response (serializer .data )
49+
50+ queryset = self .get_queryset ()
51+ serializer = self .get_serializer (queryset , many = True )
52+
53+ return Response (serializer .data )
0 commit comments