2121 RetrieveUpdateDestroyAPIView ,
2222 RetrieveAPIView ,
2323)
24- from rest_framework .permissions import AllowAny , IsAuthenticated
24+ from rest_framework .permissions import AllowAny , IsAuthenticated , IsAdminUser
2525from rest_framework .request import Request
2626from rest_framework .response import Response
2727from rest_framework .views import APIView
8888
8989class UserList (ListCreateAPIView ):
9090 queryset = User .objects .get_active ()
91- permission_classes = [AllowAny ] # FIXME: change to IsAuthorized
9291 serializer_class = UserListSerializer
9392 pagination_class = UsersPagination
9493 filter_backends = (filters .DjangoFilterBackend ,)
9594 filterset_class = UserFilter
9695
96+ def get_permissions (self ):
97+ if self .request .method == "POST" :
98+ permission_classes = [AllowAny ]
99+ else :
100+ permission_classes = [
101+ IsAdminUser
102+ ]
103+ return [permission () for permission in permission_classes ]
104+
97105 def post (self , request , * args , ** kwargs ):
98106 serializer = self .get_serializer (data = request .data )
99107 serializer .is_valid (raise_exception = True )
@@ -104,7 +112,9 @@ def post(self, request, *args, **kwargs):
104112
105113 verify_email (user , request )
106114
107- return Response (serializer .data , status = status .HTTP_201_CREATED , headers = headers )
115+ return Response (
116+ serializer .data , status = status .HTTP_201_CREATED , headers = headers
117+ )
108118
109119
110120class LikedProjectList (ListAPIView ):
@@ -305,7 +315,9 @@ def get(self, request):
305315 token = request .GET .get ("token" )
306316
307317 try :
308- payload = jwt .decode (jwt = token , key = settings .SECRET_KEY , algorithms = ["HS256" ])
318+ payload = jwt .decode (
319+ jwt = token , key = settings .SECRET_KEY , algorithms = ["HS256" ]
320+ )
309321 user = User .objects .get (id = payload ["user_id" ])
310322 access_token = RefreshToken .for_user (user ).access_token
311323 refresh_token = RefreshToken .for_user (user )
@@ -357,7 +369,9 @@ def create(self, request, *args, **kwargs):
357369 )
358370 self .perform_create (serializer )
359371 headers = self .get_success_headers (serializer .data )
360- return Response (serializer .data , status = status .HTTP_201_CREATED , headers = headers )
372+ return Response (
373+ serializer .data , status = status .HTTP_201_CREATED , headers = headers
374+ )
361375
362376
363377class AchievementDetail (RetrieveUpdateDestroyAPIView ):
@@ -448,7 +462,8 @@ def put(self, request: Request, pk):
448462 return Response (status = status .HTTP_200_OK , data = data )
449463 except Exception :
450464 return Response (
451- status = status .HTTP_400_BAD_REQUEST , data = {"error" : "Something went wrong" }
465+ status = status .HTTP_400_BAD_REQUEST ,
466+ data = {"error" : "Something went wrong" },
452467 )
453468
454469
@@ -468,7 +483,8 @@ def post(self, request, *args, **kwargs):
468483 return Response ("User already verified!" , status = status .HTTP_200_OK )
469484 except User .DoesNotExist :
470485 return Response (
471- "User with given email does not exists!" , status = status .HTTP_404_NOT_FOUND
486+ "User with given email does not exists!" ,
487+ status = status .HTTP_404_NOT_FOUND ,
472488 )
473489
474490
0 commit comments