Skip to content

Commit 6a583de

Browse files
committed
Give sub_task_count to frontend
1 parent 06b1887 commit 6a583de

4 files changed

Lines changed: 25 additions & 1 deletion

File tree

backend/tasks/misc/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
from rest_framework import viewsets
2+
from rest_framework.permissions import IsAuthenticated
23
from ..models import Tag
34
from .serializers import TagSerializer
45

56

67
class TagViewSet(viewsets.ModelViewSet):
78
queryset = Tag.objects.all()
8-
serializer_class = TagSerializer
9+
serializer_class = TagSerializer
10+
permission_classes = (IsAuthenticated,)

backend/tasks/tasks/serializers.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
from tasks.models import Todo, RecurrenceTask, Habit, Subtask
55

66
class TaskSerializer(serializers.ModelSerializer):
7+
tags = serializers.SerializerMethodField()
8+
sub_task_count = serializers.SerializerMethodField()
9+
710
class Meta:
811
model = Todo
912
fields = '__all__'
@@ -19,6 +22,12 @@ def create(self, validated_data):
1922
validated_data['user'] = user
2023
return Todo.objects.create(**validated_data)
2124

25+
def get_tags(self, instance):
26+
return [tag.name for tag in instance.tags.all()]
27+
28+
def get_sub_task_count(self, instance):
29+
return instance.subtask_set.count()
30+
2231
class TaskCreateSerializer(serializers.ModelSerializer):
2332
class Meta:
2433
model = Todo

backend/tasks/tasks/views.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ def get_serializer_class(self):
3535
return TaskCreateSerializer
3636
return TaskSerializer
3737

38+
def list(self, request, *args, **kwargs):
39+
"""
40+
list all tasks of the authenticated
41+
user and send tags if those Todo too.
42+
"""
43+
try:
44+
queryset = self.get_queryset()
45+
serializer = TaskSerializer(queryset, many=True)
46+
return Response(serializer.data)
47+
except Exception as e:
48+
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
49+
3850
def create(self, request, *args, **kwargs):
3951
try:
4052
new_task_data = request.data

frontend/src/components/kanbanBoard/kanbanBoard.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ export function KanbanBoard() {
121121
user: task.user,
122122
list_board: task.list_board,
123123
tags: task.tags,
124+
subtaskCount: task.sub_task_count,
124125
}));
125126
setTasks(transformedTasks);
126127

0 commit comments

Comments
 (0)