diff --git a/apps/course/serializers/lesson.py b/apps/course/serializers/lesson.py index 4a26e99..50fd1df 100644 --- a/apps/course/serializers/lesson.py +++ b/apps/course/serializers/lesson.py @@ -58,7 +58,8 @@ class CourseLessonSerializer(serializers.ModelSerializer): def get_quizs(self, obj): # Assuming the related_name for quizzes is now on CourseLesson - quizzes = obj.quizzes.all() if hasattr(obj, 'quizzes') else [] + print(f'--> type:{type(obj)} obj:{obj.lesson.quizzes.all()}') + quizzes = obj.lesson.quizzes.all() if hasattr(obj.lesson, 'quizzes') else [] if quizzes: return QuizListSerializer(quizzes, many=True, context=self.context).data return None \ No newline at end of file diff --git a/apps/quiz/serializers/quiz.py b/apps/quiz/serializers/quiz.py index 2a9a133..3fdc8e9 100644 --- a/apps/quiz/serializers/quiz.py +++ b/apps/quiz/serializers/quiz.py @@ -23,7 +23,14 @@ class QuizListSerializer(serializers.ModelSerializer): return False # Check if the user has participated in this quiz user = request.user - course = obj.lesson.course + + # Get the course through CourseLesson model + from apps.course.models.lesson import CourseLesson + course_lesson = CourseLesson.objects.filter(lesson=obj.lesson).first() + if not course_lesson: + return False + + course = course_lesson.course if not self._is_participant(user, course): return False @@ -78,5 +85,19 @@ class QuizSerializer(serializers.ModelSerializer): return False # Check if the user has participated in this quiz user = request.user + + # Get the course through CourseLesson model + from apps.course.models.lesson import CourseLesson + course_lesson = CourseLesson.objects.filter(lesson=obj.lesson).first() + if not course_lesson: + return False + + course = course_lesson.course + + # Check if user is a participant in the course + from apps.course.models import Participant + if not Participant.objects.filter(student=user, course=course).exists(): + return False + participated = QuizParticipant.objects.filter(user=user, quiz=obj).exists() return not participated