Skip to content

Commit 90ccb89

Browse files
authored
Merge pull request #607 from PROCOLLAB-github/feature/program-courses
Добавлены task_count для уроков и avatar_url для модулей
2 parents fbba784 + 6d9d18b commit 90ccb89

3 files changed

Lines changed: 15 additions & 2 deletions

File tree

courses/serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ class CourseLessonStructureSerializer(serializers.Serializer):
102102
module_id = serializers.IntegerField()
103103
title = serializers.CharField()
104104
order = serializers.IntegerField(min_value=1)
105+
task_count = serializers.IntegerField(min_value=0)
105106
status = serializers.ChoiceField(choices=CourseLessonContentStatus.choices)
106107
is_available = serializers.BooleanField()
107108
progress_status = serializers.ChoiceField(choices=ProgressStatus.choices)
@@ -115,6 +116,7 @@ class CourseModuleStructureSerializer(serializers.Serializer):
115116
course_id = serializers.IntegerField()
116117
title = serializers.CharField()
117118
order = serializers.IntegerField(min_value=1)
119+
avatar_url = serializers.URLField(allow_null=True)
118120
start_date = serializers.DateField()
119121
status = serializers.ChoiceField(choices=CourseModuleContentStatus.choices)
120122
is_available = serializers.BooleanField()

courses/services/querysets.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
from django.db.models import Prefetch
1+
from django.db.models import Count, Prefetch, Q
22

33
from courses.models import (
44
Course,
55
CourseContentStatus,
66
CourseLesson,
77
CourseLessonContentStatus,
8+
CourseTaskContentStatus,
89
)
910

1011

@@ -17,5 +18,12 @@ def published_lessons_prefetch():
1718
"lessons",
1819
queryset=CourseLesson.objects.filter(
1920
status=CourseLessonContentStatus.PUBLISHED
20-
).order_by("order", "id"),
21+
)
22+
.annotate(
23+
task_count=Count(
24+
"tasks",
25+
filter=Q(tasks__status=CourseTaskContentStatus.PUBLISHED),
26+
)
27+
)
28+
.order_by("order", "id"),
2129
)

courses/views.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ def get(self, request, pk: int):
156156
queryset=CourseModule.objects.filter(
157157
status=CourseModuleContentStatus.PUBLISHED
158158
)
159+
.select_related("avatar_file")
159160
.order_by("order", "id")
160161
.prefetch_related(published_lessons_prefetch()),
161162
),
@@ -222,6 +223,7 @@ def get(self, request, pk: int):
222223
"module_id": module.id,
223224
"title": lesson.title,
224225
"order": lesson.order,
226+
"task_count": lesson.task_count,
225227
"status": lesson.status,
226228
"is_available": lesson_available,
227229
"progress_status": lesson_status,
@@ -239,6 +241,7 @@ def get(self, request, pk: int):
239241
"course_id": course.id,
240242
"title": module.title,
241243
"order": module.order,
244+
"avatar_url": module.avatar_file_id,
242245
"start_date": module.start_date,
243246
"status": module.status,
244247
"is_available": module_available,

0 commit comments

Comments
 (0)