class StudentsAbsencesSerializer(serializers.ModelSerializer): student = UserProfileBaseSerializer() class Meta: model = StudentCatalogPerYear fields = ('id', 'student', 'unfounded_abs_count_sem1', 'unfounded_abs_count_annual')
class StudentsBehaviorGradeSerializer(serializers.ModelSerializer): student = UserProfileBaseSerializer() behavior_grade_limit = serializers.SerializerMethodField() class Meta: model = StudentCatalogPerYear fields = ('id', 'student', 'behavior_grade_sem1', 'behavior_grade_annual', 'behavior_grade_limit') def get_behavior_grade_limit(self, obj): return self.context.get('behavior_grade_limit', 6)
def to_representation(self, instance): representation = super().to_representation(instance) representation['categories'] = SchoolUnitCategorySerializer( instance.categories, many=True).data if instance.academic_profile: representation['academic_profile'] = SchoolUnitProfileSerializer( instance.academic_profile).data representation['school_principal'] = UserProfileBaseSerializer( instance.school_principal).data return representation
class CatalogSettingsSerializer(serializers.ModelSerializer): id = serializers.IntegerField(required=True) student = UserProfileBaseSerializer(read_only=True) wants_level_testing_grade = serializers.BooleanField(required=True) wants_thesis = serializers.BooleanField(required=True) wants_simulation = serializers.BooleanField(required=True) class Meta: model = StudentCatalogPerSubject list_serializer_class = CatalogSettingsListSerializer fields = ('id', 'student', 'wants_level_testing_grade', 'wants_thesis', 'wants_simulation', 'is_exempted', 'is_enrolled')
class StudentAtRiskSerializer(serializers.ModelSerializer): student = UserProfileBaseSerializer() behavior_grade_limit = serializers.SerializerMethodField() class Meta: model = StudentCatalogPerYear fields = ('id', 'student', 'avg_sem1', 'avg_final', 'unfounded_abs_count_sem1', 'unfounded_abs_count_annual', 'second_examinations_count', 'behavior_grade_sem1', 'behavior_grade_annual', 'behavior_grade_limit') def get_behavior_grade_limit(self, obj): return self.context.get('behavior_grade_limit', 6)
class PupilStatisticsForSchoolEmployeeSerializer(PupilStatisticsBaseSerializer ): student = UserProfileBaseSerializer() class Meta(PupilStatisticsBaseSerializer.Meta): fields = ('id', 'student', 'avg_sem1', 'avg_sem2', 'avg_final', 'second_examinations_count', 'unfounded_abs_count_sem1', 'unfounded_abs_count_sem2', 'unfounded_abs_count_annual', 'behavior_grade_sem1', 'behavior_grade_sem2', 'behavior_grade_annual', 'behavior_grade_limit', 'labels', 'risk_description', 'student_in_class', 'academic_program_name') def get_behavior_grade_limit(self, obj): return self.context.get('behavior_grade_limit', 6)
def get_students(obj): from edualert.profiles.serializers import UserProfileBaseSerializer academic_profile = obj.school_unit.academic_profile behavior_grade_limit = 8 if academic_profile and academic_profile.name in BEHAVIOR_GRADE_EXCEPTIONS_PROFILES else 6 subjects_ids = [obj.academic_program.core_subject_id] if obj.academic_program.core_subject else [] students = [] for catalog in obj.student_catalogs_per_year.all().order_by(Lower('student__full_name')): if catalog.behavior_grade_annual < behavior_grade_limit: continue student = catalog.student if student.student_catalogs_per_subject.filter(Q(avg_final__isnull=True) | Q(avg_final__lt=5) | Q(avg_final__lt=6, subject__id__in=subjects_ids), study_class_id=obj.id).count() > 0: continue students.append(student) return UserProfileBaseSerializer(instance=students, many=True).data
class RegisteredSchoolUnitDetailSerializer(serializers.ModelSerializer): categories = SchoolUnitCategorySerializer(many=True) academic_profile = SchoolUnitProfileSerializer() school_principal = UserProfileBaseSerializer() class Meta: model = RegisteredSchoolUnit fields = ( 'id', 'categories', 'academic_profile', 'address', 'phone_number', 'email', 'district', 'city', 'name', 'is_active', 'school_principal', )
def get_class_master(obj): from edualert.profiles.serializers import UserProfileBaseSerializer return UserProfileBaseSerializer(obj.class_master).data
def get_teacher(obj): from edualert.profiles.serializers import UserProfileBaseSerializer return UserProfileBaseSerializer(obj.teacher).data
def get_students(obj): from edualert.profiles.serializers import UserProfileBaseSerializer students = [catalog.student for catalog in obj.student_catalogs_per_year.all().select_related('student').order_by(Lower('student__full_name'))] return UserProfileBaseSerializer(instance=students, many=True).data
def get_children(obj): return UserProfileBaseSerializer(obj.children.order_by( Lower('full_name')), many=True).data
class ParentLastOnlineSerializer(serializers.ModelSerializer): children = UserProfileBaseSerializer(many=True) class Meta: model = UserProfile fields = ('id', 'full_name', 'children', 'last_online')
class StudentsAveragesSerializer(serializers.ModelSerializer): student = UserProfileBaseSerializer() class Meta: model = StudentCatalogPerYear fields = ('id', 'student', 'avg_sem1', 'avg_final')