Пример #1
0
 def get(self, request, pk, access_level, format=None):
     user = FilterSecurity(request)
     if access_level == user.get_my_access():
         queryset = user.get_my_students().filter(pk=pk)
     elif access_level == user.get_all_access():
         queryset = user.get_accessible_students().filter(pk=pk)
     serializer = StudentDetailSerializer(queryset, many=True)
     return Response(serializer.data)
Пример #2
0
 def get(self, request, access_level, format=None):
     user = FilterSecurity(request)
     if access_level == user.get_my_access():
         queryset = user.get_my_programs()
     elif access_level == user.get_all_access():
         queryset = user.get_accessible_programs()
     serializer = ProgramSerializer(queryset, many=True)
     return Response(serializer.data)
Пример #3
0
 def get(self, request, pk, access_level, format=None):
     user = FilterSecurity(request)
     if access_level == user.get_my_access():
         queryset = user.get_my_programs().filter(pk=pk)
     elif access_level == user.get_all_access():
         queryset = user.get_accessible_programs().filter(pk=pk)
     serializer = ProgramDetailSerializer(queryset,
                                          many=True,
                                          context={"access": access_level})
     return Response(serializer.data)
Пример #4
0
    def to_representation(self, program_obj):
        user = FilterSecurity(self.context.get('request'))
        current_user = user.get_user()
        accessible_students = user.get_accessible_students()
        my_students = user.get_my_students()

        access_level = self.context.get("access", False)

        representation = super().to_representation(program_obj)

        representation["programId"] = representation.pop("id")
        representation["programName"] = program_obj.name

        representation["noteSet"] = NoteSerializer(
            program_obj.notes.filter(user=current_user), many=True).data

        if access_level == user.get_all_access():
            representation["gradeSet"] = GradeSerializer(
                program_obj.grade_set.filter(student__in=accessible_students),
                many=True,
                read_only=True).data
            representation["attendanceSet"] = AttendanceSerializer(
                program_obj.attendance_set.filter(
                    student__in=accessible_students),
                many=True,
                read_only=True).data
            representation["behaviorSet"] = BehaviorSerializer(
                program_obj.behavior_set.filter(
                    student__in=accessible_students),
                many=True,
                read_only=True).data
            representation["studentSet"] = StudentSerializer(
                program_obj.student_set.filter(pk__in=accessible_students),
                many=True,
                read_only=True).data
        if access_level == user.get_my_access():
            representation["gradeSet"] = GradeSerializer(
                program_obj.grade_set.filter(student__in=my_students),
                many=True,
                read_only=True).data
            representation["attendanceSet"] = AttendanceSerializer(
                program_obj.attendance_set.filter(student__in=my_students),
                many=True,
                read_only=True).data
            representation["behaviorSet"] = BehaviorSerializer(
                program_obj.behavior_set.filter(student__in=my_students),
                many=True,
                read_only=True).data
            representation["studentSet"] = StudentSerializer(
                program_obj.student_set.filter(pk__in=my_students),
                many=True,
                read_only=True).data

        return representation
Пример #5
0
    def to_representation(self, course_obj):
        user = FilterSecurity(self.context.get('request'))
        current_user = user.get_user()
        accessible_students = user.get_accessible_students()
        my_students = user.get_my_students()
        access_level = self.context.get("access", False)

        representation = super().to_representation(course_obj)

        representation["courseId"] = representation.pop("id")
        representation["courseName"] = course_obj.name
        representation["schoolId"] = course_obj.school.id
        representation["schoolName"] = course_obj.school.name
        representation["courseSubject"] = course_obj.subject
        representation["courseCode"] = course_obj.code

        representation["noteSet"] = NoteSerializer(
            course_obj.notes.filter(user=current_user), many=True).data

        if access_level == user.get_all_access():
            representation["gradeSet"] = GradeSerializer(Grade.objects.filter(
                student_id__in=accessible_students.values("id"),
                course_id=course_obj.id),
                                                         many=True,
                                                         read_only=True).data
            representation["behaviorSet"] = BehaviorSerializer(
                Behavior.objects.filter(
                    student_id__in=accessible_students.values("id"),
                    course_id=course_obj.id),
                many=True,
                read_only=True).data
            representation["studentSet"] = StudentSerializer(
                accessible_students.filter(pk__in=Grade.objects.filter(
                    course_id=course_obj.id).values("student")),
                many=True,
                read_only=True).data
        elif access_level == user.get_my_access():
            representation["gradeSet"] = GradeSerializer(Grade.objects.filter(
                student_id__in=my_students.values("id"),
                course_id=course_obj.id),
                                                         many=True,
                                                         read_only=True).data
            representation["behaviorSet"] = BehaviorSerializer(
                Behavior.objects.filter(
                    student_id__in=my_students.values("id"),
                    course_id=course_obj.id),
                many=True,
                read_only=True).data
            representation["studentSet"] = StudentSerializer(
                my_students.filter(pk__in=Grade.objects.filter(
                    course_id=course_obj.id).values("student")),
                many=True,
                read_only=True).data
        return representation
Пример #6
0
    def to_representation(self, school_obj):
        user = FilterSecurity(self.context.get('request'))
        current_user = user.get_user()
        accessible_students = user.get_accessible_students()
        my_students = user.get_my_students()
        accessible_courses = user.get_accessible_courses()
        my_courses = user.get_my_courses()

        access_level = self.context.get("access", False)

        representation = super().to_representation(school_obj)

        representation["schoolId"] = representation.pop("id")
        representation["schoolName"] = school_obj.name
        representation["districtId"] = school_obj.district.id
        representation["districtName"] = school_obj.district.name

        representation["noteSet"] = NoteSerializer(
            school_obj.notes.filter(user=current_user), many=True).data

        if access_level == user.get_all_access():
            representation["gradeSet"] = GradeSerializer(Grade.objects.filter(
                student_id__in=accessible_students.values("id"),
                course__school_id=school_obj.id),
                                                         many=True,
                                                         read_only=True).data
            representation["attendanceSet"] = AttendanceSerializer(
                school_obj.attendance_set.filter(
                    student_id__in=accessible_students.values("id")),
                many=True,
                read_only=True).data
            representation["behaviorSet"] = BehaviorSerializer(
                school_obj.behavior_set.filter(
                    student_id__in=accessible_students.values("id")),
                many=True,
                read_only=True).data
            representation["studentSet"] = StudentSerializer(
                accessible_students.filter(current_school_id=school_obj.id),
                many=True,
                read_only=True).data
            representation["courseSet"] = CourseSerializer(
                accessible_courses.filter(school_id=school_obj.id),
                many=True,
                read_only=True).data
        elif access_level == user.get_my_access():
            representation["gradeSet"] = GradeSerializer(Grade.objects.filter(
                student_id__in=my_students.values("id"),
                course__school_id=school_obj.id),
                                                         many=True,
                                                         read_only=True).data
            representation["attendanceSet"] = AttendanceSerializer(
                school_obj.attendance_set.filter(
                    student_id__in=my_students.values("id")),
                many=True,
                read_only=True).data
            representation["behaviorSet"] = BehaviorSerializer(
                school_obj.behavior_set.filter(
                    student_id__in=my_students.values("id")),
                many=True,
                read_only=True).data
            representation["studentSet"] = StudentSerializer(
                my_students.filter(current_school_id=school_obj.id),
                many=True,
                read_only=True).data
            representation["courseSet"] = CourseSerializer(
                my_courses.filter(school_id=school_obj.id),
                many=True,
                read_only=True).data

        return representation
Пример #7
0
    def to_representation(self, district_obj):
        user = FilterSecurity(self.context.get('request'))
        current_user = user.get_user()
        accessible_schools = user.get_accessible_schools()
        my_schools = user.get_my_schools()
        accessible_students = user.get_accessible_students()
        my_students = user.get_my_students()

        access_level = self.context.get("access", False)
        representation = super().to_representation(district_obj)

        representation["districtId"] = representation.pop("id")
        representation["districtName"] = district_obj.name
        representation["state"] = district_obj.state
        representation["city"] = district_obj.city
        representation["code"] = district_obj.code

        representation["noteSet"] = NoteSerializer(
            district_obj.notes.filter(user=current_user), many=True).data

        if access_level == user.get_all_access():
            representation["schoolSet"] = SchoolSerializer(
                accessible_schools.filter(district=district_obj.id),
                many=True,
                read_only=True).data
            representation["studentSet"] = StudentSerializer(
                accessible_students.filter(
                    current_school__district_id=district_obj.id),
                many=True,
                read_only=True).data
            representation["gradeSet"] = GradeSerializer(Grade.objects.filter(
                student_id__in=accessible_students.values('id'),
                course__school__district_id=district_obj.id),
                                                         many=True,
                                                         read_only=True).data
            representation["attendanceSet"] = AttendanceSerializer(
                Attendance.objects.filter(
                    student_id__in=accessible_students.values('id'),
                    school__district_id=district_obj.id),
                many=True,
                read_only=True).data
            representation["behaviorSet"] = BehaviorSerializer(
                Behavior.objects.filter(student_id__in=accessible_students,
                                        school__district_id=district_obj.id),
                many=True,
                read_only=True).data
        elif access_level == user.get_my_access():
            representation["schoolSet"] = SchoolSerializer(
                my_schools.filter(district=district_obj.id),
                many=True,
                read_only=True).data
            representation["studentSet"] = StudentSerializer(
                my_students.filter(
                    current_school__district_id=district_obj.id),
                many=True,
                read_only=True).data
            representation["gradeSet"] = GradeSerializer(Grade.objects.filter(
                student_id__in=my_students.values('id'),
                course__school__district_id=district_obj.id),
                                                         many=True,
                                                         read_only=True).data
            representation["attendanceSet"] = AttendanceSerializer(
                Attendance.objects.filter(
                    student_id__in=my_students.values('id'),
                    school__district_id=district_obj.id),
                many=True,
                read_only=True).data
            representation["behaviorSet"] = BehaviorSerializer(
                Behavior.objects.filter(student_id__in=my_students,
                                        school__district_id=district_obj.id),
                many=True,
                read_only=True).data
        return representation