1+ from django .contrib .auth import get_user_model
2+ from django .shortcuts import get_object_or_404
13from rest_framework import generics , status
24from rest_framework .permissions import IsAuthenticated
35from rest_framework .response import Response
46
57from core .serializers import SetViewedSerializer , SetLikedSerializer
68from core .services import add_view , set_like
9+ from news .mixins import NewsQuerysetMixin
710from news .models import News
811from news .pagination import NewsPagination
912from news .permissions import IsNewsCreatorOrReadOnly
1013from news .serializers import NewsListSerializer , NewsDetailSerializer
11- from news .mixins import NewsQuerysetMixin
1214from projects .models import Project
1315
16+ User = get_user_model ()
17+
1418
1519class NewsList (NewsQuerysetMixin , generics .ListCreateAPIView ):
1620 serializer_class = NewsListSerializer
@@ -19,14 +23,20 @@ class NewsList(NewsQuerysetMixin, generics.ListCreateAPIView):
1923
2024 def post (self , request , * args , ** kwargs ):
2125 if kwargs .get ("project_pk" ):
22- project = Project . objects . get ( pk = kwargs ["project_pk" ])
26+ project = get_object_or_404 ( Project , pk = kwargs ["project_pk" ])
2327 news = News .objects .add_news (project , ** request .data )
2428 return Response (
2529 NewsDetailSerializer (news ).data , status = status .HTTP_201_CREATED
2630 )
31+ elif kwargs .get ("user_pk" ):
32+ user = get_object_or_404 (User , pk = kwargs ["user_pk" ])
33+ news = News .objects .add_news (user , ** request .data )
34+ return Response (
35+ NewsDetailSerializer (news ).data , status = status .HTTP_201_CREATED
36+ )
2737 else :
28- # creating partner program news, not implemented yet
29- raise NotImplementedError ( )
38+ # creating partner program news, not implemented yet, return 400
39+ return Response ( status = status . HTTP_400_BAD_REQUEST )
3040
3141 def get (self , request , * args , ** kwargs ):
3242 news = self .paginate_queryset (self .get_queryset ())
0 commit comments