diff --git a/workshop/api/__pycache__/models.cpython-310.pyc b/workshop/api/__pycache__/models.cpython-310.pyc index b5faa2c..75bf3ff 100644 Binary files a/workshop/api/__pycache__/models.cpython-310.pyc and b/workshop/api/__pycache__/models.cpython-310.pyc differ diff --git a/workshop/api/__pycache__/serializers.cpython-310.pyc b/workshop/api/__pycache__/serializers.cpython-310.pyc new file mode 100644 index 0000000..df991e2 Binary files /dev/null and b/workshop/api/__pycache__/serializers.cpython-310.pyc differ diff --git a/workshop/api/__pycache__/urls.cpython-310.pyc b/workshop/api/__pycache__/urls.cpython-310.pyc index 7ea9cb0..2d6a2be 100644 Binary files a/workshop/api/__pycache__/urls.cpython-310.pyc and b/workshop/api/__pycache__/urls.cpython-310.pyc differ diff --git a/workshop/api/__pycache__/views.cpython-310.pyc b/workshop/api/__pycache__/views.cpython-310.pyc index cacb536..695505f 100644 Binary files a/workshop/api/__pycache__/views.cpython-310.pyc and b/workshop/api/__pycache__/views.cpython-310.pyc differ diff --git a/workshop/api/models.py b/workshop/api/models.py index 3dd6daf..e7295a3 100644 --- a/workshop/api/models.py +++ b/workshop/api/models.py @@ -3,8 +3,8 @@ # Create your models here class Task(models.Model): name = models.CharField(max_length=20) - description = models.TextField(max_length=100) - due_to = models.DateTimeField(blank=True, auto_now=False) + description = models.TextField(max_length=100, blank=True, null=True) + due_to = models.DateTimeField(blank=True, auto_now=False, null=True) is_completed = models.BooleanField() def __str__(self): diff --git a/workshop/api/serializers.py b/workshop/api/serializers.py index e69de29..f96f249 100644 --- a/workshop/api/serializers.py +++ b/workshop/api/serializers.py @@ -0,0 +1,9 @@ +from rest_framework import serializers +from .models import Task + +class TaskSerializer(serializers.ModelSerializer): + class Meta: + model = Task + fields = '__all__' + + diff --git a/workshop/api/urls.py b/workshop/api/urls.py index 9db3288..7c71bed 100644 --- a/workshop/api/urls.py +++ b/workshop/api/urls.py @@ -1,6 +1,7 @@ from django.urls import path -from .views import BaseView +from .views import TasksView, SingleTaskView urlpatterns = [ - path('', BaseView.as_view()) + path('tasks/', TasksView.as_view()), + path('tasks//', SingleTaskView.as_view()) ] diff --git a/workshop/api/views.py b/workshop/api/views.py index 50fceb8..bc417f4 100644 --- a/workshop/api/views.py +++ b/workshop/api/views.py @@ -1,9 +1,43 @@ from rest_framework.views import APIView from rest_framework.response import Response +from .models import Task +from django.shortcuts import get_object_or_404 +from rest_framework import status +from .serializers import TaskSerializer -class BaseView(APIView): +class TasksView(APIView): def get(self, request): - return Response("Hello World") - + tasks = Task.objects.all() + serializer = TaskSerializer(tasks, many=True) + return Response(serializer.data) + + + def post(self, request): + serializer = TaskSerializer(data=request.data) + if serializer.is_valid(): + serializer.save() + return Response({"status": "success", "data": {"note": serializer.data}}, status=status.HTTP_201_CREATED) + else: + return Response({"status": "fail", "message": serializer.errors}, status=status.HTTP_400_BAD_REQUEST) + + +class SingleTaskView(APIView): + def get(self, request, id): + task = get_object_or_404(Task, pk=id) + serializer = TaskSerializer(task) + return Response(serializer.data) + + def put(self, request, id): + task = get_object_or_404(Task, pk=id) + serializer = TaskSerializer(task, data=request.data) + if serializer.is_valid(): + serializer.save() + return Response({"status": "success", "data": {"note": serializer.data}}, status=status.HTTP_201_CREATED) + else: + return Response({"status": "fail", "message": serializer.errors}, status=status.HTTP_400_BAD_REQUEST) + def delete(self, request, id): + task = get_object_or_404(Task, pk=id) + task.delete() + return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/workshop/db.sqlite3 b/workshop/db.sqlite3 index 0864382..0efb19d 100644 Binary files a/workshop/db.sqlite3 and b/workshop/db.sqlite3 differ