1- from django .shortcuts import render
1+ from django .shortcuts import render , get_list_or_404 , get_object_or_404
22from .serializers import *
33from rest_framework .response import Response
4- from .models import Task
4+ from .models import *
55from rest_framework .views import APIView
66from rest_framework import status
77from django .contrib .auth import get_user_model
8- from rest_framework .permissions import IsAdminUser
8+ from rest_framework .permissions import IsAdminUser , IsAuthenticated
9+ from .permissions import IsTaskOwner
910from django .http import Http404
1011
1112
1213
1314# Create your views here.
1415class TaskView (APIView ):
16+ permission_classes = [IsAuthenticated ]
1517 """
1618 list all task or create a new task
1719 """
1820 def get (self , request , format = None ):
19- tasks = Task .objects .all ( )
21+ tasks = Task .objects .filter ( user = request . user ). order_by ( 'priority' , 'deadline' )
2022 serializer = TaskSerializer (tasks , many = True )
2123 return Response (serializer .data )
2224
@@ -54,4 +56,48 @@ def put(self, request, pk, format=None):
5456 def delete (self , request , pk , format = None ):
5557 task = self .get_object (pk )
5658 task .delete ()
57- return Response (status = status .HTTP_204_NO_CONTENT )
59+ return Response ({
60+ "success" : True ,
61+ "message" : "Task deleted"
62+ },status = status .HTTP_204_NO_CONTENT )
63+
64+
65+ class TagView (APIView ):
66+ """
67+ list all task or create a new task
68+ """
69+ def get (self , request , format = None ):
70+ tags = Tag .objects .all ()
71+ serializer = TagSerializer (tags , many = True )
72+ return Response (serializer .data )
73+
74+ def post (self , request , format = None ):
75+ serializer = TagSerializer (data = request .data )
76+ if serializer .is_valid ():
77+ serializer .save ()
78+ return Response (serializer .data , status = status .HTTP_201_CREATED )
79+ return Response (serializer .errors , status = status .HTTP_400_BAD_REQUEST )
80+
81+
82+ class TagDetail (APIView ):
83+ """
84+ Retrieve, update or delete a snippet instance.
85+ """
86+ def get_object (self , pk ):
87+ try :
88+ return Tag .objects .get (pk = pk )
89+ except Tag .DoesNotExist :
90+ raise Http404
91+
92+ def get (self , request , pk , format = None ):
93+ tag = self .get_object (pk )
94+ serializer = TagSerializer (tag )
95+ return Response (serializer .data )
96+
97+ def put (self , request , pk , format = None ):
98+ tag = self .get_object (pk )
99+ serializer = TagSerializer (tag , data = request .data )
100+ if serializer .is_valid ():
101+ serializer .save ()
102+ return Response (serializer .data )
103+ return Response (serializer .errors , status = status .HTTP_400_BAD_REQUEST )
0 commit comments