|
|
|
@ -44,40 +44,60 @@ class LessonDetailView(RetrieveAPIView): |
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
lesson_id = self.kwargs.get('id') |
|
|
|
lesson = get_object_or_404(Lesson, id=lesson_id, is_active=True) |
|
|
|
|
|
|
|
# Get the next and previous lessons based on priority and id |
|
|
|
next_lesson = Lesson.objects.filter( |
|
|
|
course=lesson.course, |
|
|
|
is_active=True, |
|
|
|
priority__gte=lesson.priority, |
|
|
|
id__gt=lesson.id |
|
|
|
).order_by('priority', 'id').first() |
|
|
|
|
|
|
|
previous_lesson = Lesson.objects.filter( |
|
|
|
course=lesson.course, |
|
|
|
is_active=True, |
|
|
|
priority__lte=lesson.priority, |
|
|
|
id__lt=lesson.id |
|
|
|
).order_by('-priority', '-id').first() |
|
|
|
total_lessons = Lesson.objects.filter(course=lesson.course, is_active=True).count() |
|
|
|
# Calculate the current lesson number in the course |
|
|
|
current_lesson_number = Lesson.objects.filter( |
|
|
|
course=lesson.course, |
|
|
|
is_active=True, |
|
|
|
priority__lte=lesson.priority |
|
|
|
).count() |
|
|
|
|
|
|
|
# Serialize the current lesson |
|
|
|
|
|
|
|
course = lesson.course |
|
|
|
lessons = Lesson.objects.filter(course=course, is_active=True).order_by('priority') |
|
|
|
|
|
|
|
total_lessons = lessons.count() |
|
|
|
current_lesson_number = list(lessons.values_list('id', flat=True)).index(lesson.id) + 1 |
|
|
|
next_lesson = lessons.filter(priority__gt=lesson.priority).order_by('priority').first() |
|
|
|
next_lesson_id = next_lesson.id if next_lesson else None |
|
|
|
previous_lesson = lessons.filter(priority__lt=lesson.priority).order_by('-priority').first() |
|
|
|
previous_lesson_id = previous_lesson.id if previous_lesson else None |
|
|
|
|
|
|
|
lesson_data = self.get_serializer(lesson).data |
|
|
|
# Add current lesson number and total lessons |
|
|
|
lesson_data['current_lesson_number'] = current_lesson_number |
|
|
|
lesson_data['total_lessons'] = total_lessons |
|
|
|
lesson_data['current_lesson_number'] = current_lesson_number |
|
|
|
lesson_data['next_lesson_id'] = next_lesson_id |
|
|
|
lesson_data['previous_lesson_id'] = previous_lesson_id |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# # Get the next and previous lessons based on priority and id |
|
|
|
# next_lesson = Lesson.objects.filter( |
|
|
|
# course=lesson.course, |
|
|
|
# is_active=True, |
|
|
|
# priority__gte=lesson.priority, |
|
|
|
# id__gt=lesson.id |
|
|
|
# ).order_by('priority', 'id').first() |
|
|
|
|
|
|
|
# previous_lesson = Lesson.objects.filter( |
|
|
|
# course=lesson.course, |
|
|
|
# is_active=True, |
|
|
|
# priority__lte=lesson.priority, |
|
|
|
# id__lt=lesson.id |
|
|
|
# ).order_by('-priority', '-id').first() |
|
|
|
|
|
|
|
# total_lessons = Lesson.objects.filter(course=lesson.course, is_active=True).count() |
|
|
|
# # Calculate the current lesson number in the course |
|
|
|
# current_lesson_number = Lesson.objects.filter( |
|
|
|
# course=lesson.course, |
|
|
|
# is_active=True, |
|
|
|
# priority__lte=lesson.priority |
|
|
|
# ).count() |
|
|
|
|
|
|
|
# # Serialize the current lesson |
|
|
|
# lesson_data = self.get_serializer(lesson).data |
|
|
|
# # Add current lesson number and total lessons |
|
|
|
# lesson_data['current_lesson_number'] = current_lesson_number |
|
|
|
# lesson_data['total_lessons'] = total_lessons |
|
|
|
|
|
|
|
# Add next and previous lesson ids |
|
|
|
lesson_data['next_lesson_id'] = next_lesson.id if next_lesson else None |
|
|
|
lesson_data['previous_lesson_id'] = previous_lesson.id if previous_lesson else None |
|
|
|
# # Add next and previous lesson ids |
|
|
|
# lesson_data['next_lesson_id'] = next_lesson.id if next_lesson else None |
|
|
|
# lesson_data['previous_lesson_id'] = previous_lesson.id if previous_lesson else None |
|
|
|
|
|
|
|
lesson_data['can_go_next'] = next_lesson is not None |
|
|
|
# lesson_data['can_go_next'] = next_lesson is not None |
|
|
|
|
|
|
|
return Response(lesson_data) |
|
|
|
|
|
|
|
|