|
1 | | -from rest_framework.decorators import api_view, permission_classes |
2 | | -from rest_framework.permissions import IsAuthenticated |
3 | | -from rest_framework.response import Response |
4 | 1 | from rest_framework import status |
5 | | -from rest_framework.parsers import JSONParser |
| 2 | +from rest_framework.response import Response |
| 3 | +from rest_framework.generics import RetrieveUpdateDestroyAPIView, ListCreateAPIView |
6 | 4 | from .models import Movie |
| 5 | +from .permissions import IsOwnerOrReadOnly, IsAuthenticated |
7 | 6 | from .serializers import MovieSerializer |
8 | | -from .permissions import IsOwnerOrReadOnly |
9 | 7 |
|
| 8 | +class get_delete_update_movie(RetrieveUpdateDestroyAPIView): |
| 9 | + permission_classes = (IsAuthenticated, IsOwnerOrReadOnly,) |
| 10 | + |
| 11 | + def get_queryset(self, pk): |
| 12 | + try: |
| 13 | + movie = Movie.objects.get(pk=pk) |
| 14 | + except Movie.DoesNotExist: |
| 15 | + content = { |
| 16 | + 'status': 'Not Found' |
| 17 | + } |
| 18 | + return Response(content, status=status.HTTP_404_NOT_FOUND) |
| 19 | + return movie |
10 | 20 |
|
11 | | -@api_view(['GET', 'DELETE', 'PUT']) # Methods Allowed |
12 | | -@permission_classes((IsAuthenticated, IsOwnerOrReadOnly,)) # Pemissions, Only Authenticated user |
13 | | -def get_delete_update_movie(request, pk): #pk es PrimaryKey(Id) |
14 | | - try: |
15 | | - movie = Movie.objects.get(pk=pk) |
16 | | - except Movie.DoesNotExist: |
17 | | - content = { |
18 | | - 'status': 'Not Found' |
19 | | - } |
20 | | - return Response(content, status=status.HTTP_404_NOT_FOUND) |
| 21 | + # Get a movie |
| 22 | + def get(self, request, pk): |
21 | 23 |
|
22 | | - # details a sinlge movie |
23 | | - if request.method == 'GET': |
| 24 | + movie = self.get_queryset(pk) |
24 | 25 | serializer = MovieSerializer(movie) |
25 | | - return Response(serializer.data) |
26 | | - # delete a movie |
27 | | - elif request.method == 'DELETE': |
| 26 | + return Response(serializer.data, status=status.HTTP_200_OK) |
| 27 | + |
| 28 | + # Update a movie |
| 29 | + def put(self, request, pk): |
| 30 | + |
| 31 | + movie = self.get_queryset(pk) |
| 32 | + |
28 | 33 | if(request.user == movie.creator): # If creator is who makes request |
29 | | - movie.delete() |
30 | | - content = { |
31 | | - 'status': 'NO CONTENT' |
32 | | - } |
33 | | - return Response(content, status=status.HTTP_204_NO_CONTENT) |
| 34 | + serializer = MovieSerializer(movie, data=request.data) |
| 35 | + if serializer.is_valid(): |
| 36 | + serializer.save() |
| 37 | + return Response(serializer.data, status=status.HTTP_201_CREATED) |
| 38 | + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |
34 | 39 | else: |
35 | 40 | content = { |
36 | 41 | 'status': 'UNAUTHORIZED' |
37 | 42 | } |
38 | 43 | return Response(content, status=status.HTTP_401_UNAUTHORIZED) |
39 | | - # update a movie |
40 | | - elif request.method == 'PUT': |
| 44 | + |
| 45 | + # Delete a movie |
| 46 | + def delete(self, request, pk): |
| 47 | + |
| 48 | + movie = self.get_queryset(pk) |
| 49 | + |
41 | 50 | if(request.user == movie.creator): # If creator is who makes request |
42 | | - serializer = MovieSerializer(movie, data=request.data) |
43 | | - if serializer.is_valid(): |
44 | | - serializer.save() |
45 | | - return Response(serializer.data, status=status.HTTP_201_CREATED) |
46 | | - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |
| 51 | + movie.delete() |
| 52 | + content = { |
| 53 | + 'status': 'NO CONTENT' |
| 54 | + } |
| 55 | + return Response(content, status=status.HTTP_204_NO_CONTENT) |
47 | 56 | else: |
48 | 57 | content = { |
49 | 58 | 'status': 'UNAUTHORIZED' |
50 | 59 | } |
51 | 60 | return Response(content, status=status.HTTP_401_UNAUTHORIZED) |
| 61 | + |
| 62 | + |
| 63 | +class get_post_movies(ListCreateAPIView): |
| 64 | + serializer_class = MovieSerializer |
| 65 | + #permission_classes = (IsAuthenticated,) |
| 66 | + # Get all movies |
| 67 | + |
| 68 | + def get_queryset(self): |
| 69 | + movies = Movie.objects.all() |
| 70 | + return movies |
| 71 | + |
| 72 | + def get(self, request): |
52 | 73 |
|
| 74 | + movies = self.get_queryset() |
| 75 | + serializer = MovieSerializer(movies, many=True) |
| 76 | + return Response(serializer.data, status=status.HTTP_200_OK) |
53 | 77 |
|
54 | | -@api_view(['GET', 'POST']) |
55 | | -@permission_classes((IsAuthenticated, )) |
56 | | -def get_post_movies(request): |
57 | | - # get all movies |
58 | | - if request.method == 'GET': |
59 | | - puppies = Movie.objects.all() |
60 | | - serializer = MovieSerializer(puppies, many=True) |
61 | | - return Response(serializer.data) |
| 78 | + # Create a new movie |
| 79 | + def post(self, request): |
62 | 80 |
|
63 | | - # create a new movie |
64 | | - elif request.method == 'POST': |
65 | 81 | serializer = MovieSerializer(data=request.data) |
66 | 82 | if serializer.is_valid(): |
67 | 83 | serializer.save(creator=request.user) |
|
0 commit comments