|
|
|
@ -248,6 +248,16 @@ class CourseDetailSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
def _get_completed_lessons_count(self, student, course): |
|
|
|
"""Helper method to count completed lessons for the student in the given course.""" |
|
|
|
# Use prefetched completions if available |
|
|
|
if hasattr(course, 'lessons') and course.lessons.all(): |
|
|
|
completed_count = 0 |
|
|
|
for lesson in course.lessons.all(): |
|
|
|
if hasattr(lesson, 'completions') and lesson.completions.all(): |
|
|
|
if any(completion.student_id == student.id for completion in lesson.completions.all()): |
|
|
|
completed_count += 1 |
|
|
|
return completed_count |
|
|
|
|
|
|
|
# Fallback to direct query if not prefetched |
|
|
|
return LessonCompletion.objects.filter( |
|
|
|
student=student, |
|
|
|
course_lesson__course=course |
|
|
|
@ -323,6 +333,16 @@ class MyCourseListSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
def _get_completed_lessons_count(self, student, course): |
|
|
|
"""Helper method to count completed lessons for the student in the given course.""" |
|
|
|
# Use prefetched completions if available |
|
|
|
if hasattr(course, 'lessons') and course.lessons.all(): |
|
|
|
completed_count = 0 |
|
|
|
for lesson in course.lessons.all(): |
|
|
|
if hasattr(lesson, 'completions') and lesson.completions.all(): |
|
|
|
if any(completion.student_id == student.id for completion in lesson.completions.all()): |
|
|
|
completed_count += 1 |
|
|
|
return completed_count |
|
|
|
|
|
|
|
# Fallback to direct query if not prefetched |
|
|
|
return LessonCompletion.objects.filter( |
|
|
|
student=student, |
|
|
|
course_lesson__course=course |
|
|
|
|