-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAPI.py
More file actions
70 lines (58 loc) · 2.53 KB
/
API.py
File metadata and controls
70 lines (58 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from rest_framework.permissions import IsAuthenticated
def notexist():
return {"error": "Los datos no fueron encontrados"}
class SuperAPIView(APIView):
model = None
serializer = None
# def get_permissions(self):
# if self.request.method in ['POST', 'PUT', 'PATCH', 'DELETE']:
# return [IsAuthenticated()]
# return []
def get(self, request, pk=None):
if pk:
try:
obj = self.model.objects.get(pk=pk)
serializer = self.serializer(obj)
return Response(serializer.data, status=status.HTTP_200_OK)
except self.model.DoesNotExist:
return Response(notexist(), status=status.HTTP_404_NOT_FOUND)
else:
obj = self.model.objects.all()
serializer = self.serializer(obj, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
def post(self, request):
serializer = self.serializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def put(self, request, pk):
try:
obj = self.model.objects.get(pk=pk)
except self.model.DoesNotExist:
return Response(notexist(), status=status.HTTP_404_NOT_FOUND)
serializer = self.serializer(obj, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def patch(self, request, pk):
try:
obj = self.model.objects.get(pk=pk)
except self.model.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = self.serializer(obj, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk):
try:
obj = self.model.objects.get(pk=pk)
except self.model.DoesNotExist:
return Response(notexist(), status=status.HTTP_404_NOT_FOUND)
obj.delete()
return Response(status=status.HTTP_204_NO_CONTENT)