from rest_framework import serializers from progress.models import Progress, ProgressLesson class ProgressSerializer(serializers.ModelSerializer): lessons = serializers.SerializerMethodField() class Meta: model = Progress fields = ('lessons', 'course_token', 'only_watch') @staticmethod def get_lessons(self): return [ProgressLessonSerializer(i).data for i in self.progresslesson_set.all()] class ProgressAnalyticSerializer(serializers.ModelSerializer): name = serializers.SerializerMethodField() email = serializers.SerializerMethodField() class Meta: model = Progress fields = ('name', 'email',) @staticmethod def get_name(self): return self.user.get_full_name() @staticmethod def get_email(self): return self.user.email class ProgressLessonSerializer(serializers.ModelSerializer): teacher = serializers.SerializerMethodField() student = serializers.SerializerMethodField() course_token = serializers.SerializerMethodField() class Meta: model = ProgressLesson exclude = ('progress', 'checker') @staticmethod def get_teacher(self): return self.checker.get_full_name() @staticmethod def get_student(self): return {'name': self.progress.user.get_full_name(), "out_key": self.progress.user.out_key} @staticmethod def get_course_token(self): return self.progress.course_token