From 6a583dee903d2ea32d05a986592e1bb8803435d0 Mon Sep 17 00:00:00 2001 From: sosokker Date: Tue, 28 Nov 2023 11:01:10 +0700 Subject: [PATCH] Give sub_task_count to frontend --- backend/tasks/misc/views.py | 4 +++- backend/tasks/tasks/serializers.py | 9 +++++++++ backend/tasks/tasks/views.py | 12 ++++++++++++ frontend/src/components/kanbanBoard/kanbanBoard.jsx | 1 + 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/backend/tasks/misc/views.py b/backend/tasks/misc/views.py index 3fbc837..8f00572 100644 --- a/backend/tasks/misc/views.py +++ b/backend/tasks/misc/views.py @@ -1,8 +1,10 @@ from rest_framework import viewsets +from rest_framework.permissions import IsAuthenticated from ..models import Tag from .serializers import TagSerializer class TagViewSet(viewsets.ModelViewSet): queryset = Tag.objects.all() - serializer_class = TagSerializer \ No newline at end of file + serializer_class = TagSerializer + permission_classes = (IsAuthenticated,) \ No newline at end of file diff --git a/backend/tasks/tasks/serializers.py b/backend/tasks/tasks/serializers.py index d7249c6..9a56632 100644 --- a/backend/tasks/tasks/serializers.py +++ b/backend/tasks/tasks/serializers.py @@ -4,6 +4,9 @@ from boards.models import ListBoard from tasks.models import Todo, RecurrenceTask, Habit, Subtask class TaskSerializer(serializers.ModelSerializer): + tags = serializers.SerializerMethodField() + sub_task_count = serializers.SerializerMethodField() + class Meta: model = Todo fields = '__all__' @@ -19,6 +22,12 @@ class TaskSerializer(serializers.ModelSerializer): validated_data['user'] = user return Todo.objects.create(**validated_data) + def get_tags(self, instance): + return [tag.name for tag in instance.tags.all()] + + def get_sub_task_count(self, instance): + return instance.subtask_set.count() + class TaskCreateSerializer(serializers.ModelSerializer): class Meta: model = Todo diff --git a/backend/tasks/tasks/views.py b/backend/tasks/tasks/views.py index 20c4835..bd5d568 100644 --- a/backend/tasks/tasks/views.py +++ b/backend/tasks/tasks/views.py @@ -35,6 +35,18 @@ class TodoViewSet(viewsets.ModelViewSet): return TaskCreateSerializer return TaskSerializer + def list(self, request, *args, **kwargs): + """ + list all tasks of the authenticated + user and send tags if those Todo too. + """ + try: + queryset = self.get_queryset() + serializer = TaskSerializer(queryset, many=True) + return Response(serializer.data) + except Exception as e: + return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + def create(self, request, *args, **kwargs): try: new_task_data = request.data diff --git a/frontend/src/components/kanbanBoard/kanbanBoard.jsx b/frontend/src/components/kanbanBoard/kanbanBoard.jsx index 0ec4686..0a9049d 100644 --- a/frontend/src/components/kanbanBoard/kanbanBoard.jsx +++ b/frontend/src/components/kanbanBoard/kanbanBoard.jsx @@ -121,6 +121,7 @@ export function KanbanBoard() { user: task.user, list_board: task.list_board, tags: task.tags, + subtaskCount: task.sub_task_count, })); setTasks(transformedTasks);