from django.db import transaction from drf_spectacular.utils import extend_schema from rest_framework import permissions, generics, status from rest_framework.response import Response from core.apps.tasks.models.task import Task from core.apps.tasks.serializers.task import TaskSerializer, TaskCreateSerializer @extend_schema(tags=['Tasks']) class TaskCreateView(generics.GenericAPIView): permission_classes = [permissions.IsAuthenticated] serializer_class = TaskCreateSerializer queryset = Task.objects.order_by('id') @transaction.atomic def post(self, request): serializer = self.get_serializer(data=request.data) if not serializer.is_valid(raise_exception=True): return Response(serializer.validated_data, status=status.HTTP_400_BAD_REQUEST) serializer.save() return Response(serializer.data) @extend_schema(tags=['Tasks']) class TaskListView(generics.ListAPIView): permission_classes = [permissions.IsAuthenticated] serializer_class = TaskSerializer queryset = Task.objects.order_by('id') def serializer_context(self): return self.serializer_class(context={"request": self.request}) @extend_schema(tags=['Tasks']) class TaskDetailView(generics.RetrieveUpdateDestroyAPIView): permission_classes = [permissions.IsAuthenticated] serializer_class = TaskSerializer queryset = Task.objects.order_by('id')