コード例 #1
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
    def put(self, request, *args, **kwargs):
        try:
            lesson = Lesson.objects.get(pk=kwargs['pk'])
            attendance = Attendance.objects.get(pk=kwargs['att_pk'])
        except Lesson.DoesNotExist:
            raise GenericException(
                code=status.HTTP_404_NOT_FOUND,
                detail="Lesson of requested id does not exist")
        except Attendance.DoesNotExist:
            CreateAttendanceRequest(data=request.data).is_valid(
                raise_exception=True)
            student = Person.objects.get(
                Q(pk=request.data.get("student_id", "")) & Q(groups__in=[1]))
            attendance = Attendance.objects.create(
                pk=kwargs['att_pk'],
                lesson=lesson,
                student=student,
                was_present=request.data.get("was_present", ""))
            return Response(data=AttendanceSerializer(attendance).data,
                            status=status.HTTP_201_CREATED)

        if attendance.lesson.id is not lesson.id:
            raise GenericException(
                code=status.HTTP_400_BAD_REQUEST,
                detail="Attendance of requested id is not from requested lesson"
            )

        attendance.was_present = not attendance.was_present
        attendance.save()
        return Response(status=status.HTTP_204_NO_CONTENT)
コード例 #2
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
    def get_queryset(self):
        try:
            student = Person.objects.get(pk=self.kwargs['pk'])
        except Person.DoesNotExist:
            raise GenericException(
                code=status.HTTP_404_NOT_FOUND,
                detail="Student of requested id does not exist")
        if student.groups.filter(pk=1).count() == 0:
            raise GenericException(code=status.HTTP_400_BAD_REQUEST,
                                   detail="User of given id is not a student")

        enrollments = Enrollment.objects.filter(student=student)
        class_groups = list()
        for enrollment in enrollments:
            if enrollment.class_group.id in class_groups:
                continue
            class_groups.append(enrollment.class_group.id)

        transfer_requests = TransferRequest.objects.filter(
            Q(enrollment__student=student) & Q(status=TransferStatus.PENDING))
        for request in transfer_requests:
            if request.target_group.id in class_groups:
                continue
            class_groups.append(request.target_group.id)
        available_class_groups = ClassGroup.objects.exclude(
            pk__in=class_groups)
        return available_class_groups
コード例 #3
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def post(self, request, *args, **kwargs):
     try:
         student = Person.objects.get(pk=self.kwargs['pk'], groups__in=[1])
     except Person.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Student of requested id does not exist")
     EnrollmentRequestSerializer(data=request.data).is_valid(
         raise_exception=True)
     class_group = ClassGroup.objects.get(
         pk=request.data.get("class_group_id", ""))
     enrollment_status = EnrollmentStatus(
         request.data.get("enrollment_status", ""))
     active = True if enrollment_status is EnrollmentStatus.ACCEPTED else False
     if Enrollment.objects.filter(student=student,
                                  class_group=class_group).count() > 0:
         raise GenericException(
             code=status.HTTP_400_BAD_REQUEST,
             detail="'{}' is already enrolled in '{}'".format(
                 student.first_name, class_group))
     enrollment = Enrollment.objects.create(student=student,
                                            class_group=class_group,
                                            graduated=False,
                                            finalGrade=None,
                                            active=active,
                                            status=enrollment_status)
     return Response(data=EnrollmentSerializer(enrollment).data,
                     status=status.HTTP_201_CREATED)
コード例 #4
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
    def post(self, request, *args, **kwargs):
        origin_group = ClassGroup.objects.get(
            pk=request.data.get("class_group_id", ""))
        requester_student = Person.objects.get(
            Q(pk=request.data.get("student_id", ""))
            & Q(groups__in=[Group.objects.get(pk=1)]))
        enrollment = Enrollment.objects.get(
            Q(class_group=origin_group) & Q(student=requester_student))
        target_group = ClassGroup.objects.get(
            Q(id=request.data.get("target_group_id", ""))
            & Q(course=origin_group.course))

        if Enrollment.objects.filter(
                Q(class_group=target_group)
                & Q(student=requester_student)).count() > 0:
            raise GenericException(
                code=status.HTTP_400_BAD_REQUEST,
                detail="'{}' is already enrolled in '{}.'".format(
                    requester_student, target_group))
        transfer_request = TransferRequest.objects.create(
            enrollment=enrollment,
            target_group=target_group,
            status=TransferStatus.PENDING)
        return Response(data=TransferRequestSerializer(transfer_request).data,
                        status=status.HTTP_201_CREATED)
コード例 #5
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def get_queryset(self):
     try:
         class_group = ClassGroup.objects.get(pk=self.kwargs['pk'])
     except ClassGroup.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="ClassGroup of requested id does not exist")
     return Enrollment.objects.filter(class_group=class_group)
コード例 #6
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def get(self, request, *args, **kwargs):
     try:
         student = Person.objects.get(pk=self.kwargs['pk'], groups__in=[1])
         class_group = ClassGroup.objects.filter(
             pk=self.kwargs['group_id'])[:1].get()
     except Person.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Student of requested id does not exist")
     except ClassGroup.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Class group of requested id does not exist")
     attendances = list(
         Attendance.objects.filter(student=student,
                                   lesson__class_group=class_group))
     return Response(data=StudentAttendanceSerializer(attendances,
                                                      many=True).data,
                     status=status.HTTP_200_OK)
コード例 #7
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def delete(self, request, *args, **kwargs):
     try:
         transfer_request = TransferRequest.objects.get(pk=kwargs["pk"])
     except TransferRequest.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Transfer Request of requested id does not exist")
     transfer_request.status = TransferStatus.REJECTED
     transfer_request.save()
     return Response(status=status.HTTP_204_NO_CONTENT)
コード例 #8
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
    def get(self, request, *args, **kwargs):
        try:
            user = Person.objects.get(pk=self.kwargs['pk'])
        except Person.DoesNotExist:
            raise GenericException(
                code=status.HTTP_404_NOT_FOUND,
                detail="User of requested id does not exist")
        if not user.groups.filter(pk__in=[2, 3]):
            raise GenericException(
                code=status.HTTP_403_FORBIDDEN,
                detail=
                "User does not have the required permissions to perform this action"
            )

        class_groups = list(
            ClassGroup.objects.filter(
                Q(teacher=user) | Q(collaborators__in=[user])))
        return Response(data=ClassGroupSerializer(class_groups,
                                                  many=True).data,
                        status=status.HTTP_200_OK)
コード例 #9
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def get(self, request, *args, **kwargs):
     try:
         lesson = Lesson.objects.get(pk=self.kwargs['pk'])
     except Lesson.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Lesson of requested id does not exist")
     attendances = list(Attendance.objects.filter(lesson=lesson))
     return Response(data=LessonAttendanceSerializer(attendances,
                                                     many=True).data,
                     status=status.HTTP_200_OK)
コード例 #10
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def get(self, request, *args, **kwargs):
     try:
         class_group = ClassGroup.objects.get(pk=kwargs['pk'])
     except ClassGroup.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Class group of requested id could not be found")
     lessons = Lesson.objects.filter(class_group=class_group)
     return Response(data=ClassGroupLessonSerializer(lessons,
                                                     many=True).data,
                     status=status.HTTP_200_OK)
コード例 #11
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def get(self, request, *args, **kwargs):
     try:
         student = Person.objects.filter(pk=self.kwargs['pk'],
                                         groups__in=[1])[:1].get()
     except Person.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Student of requested id does not exist")
     student_enrollments = list(
         Enrollment.objects.filter(student_id=student.id))
     serializer = StudentEnrollmentSerializer(student_enrollments,
                                              many=True)
     return Response(data=serializer.data, status=status.HTTP_200_OK)
コード例 #12
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def get(self, request, *args, **kwargs):
     if Course.objects.filter(pk=self.kwargs['pk']).count() == 0:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Course of requested id does not exist")
     enrollments = list(
         Enrollment.objects.filter(
             class_group__course_id=self.kwargs['pk']))
     students = list()
     for enrollment in enrollments:
         if enrollment.student in students:
             continue
         students.append(enrollment.student)
     return Response(data=StudentSerializer(students, many=True).data,
                     status=status.HTTP_200_OK)
コード例 #13
0
ファイル: api.py プロジェクト: 19com846/nossoLarApp
 def get(self, request, *args, **kwargs):
     try:
         student = Person.objects.get(pk=self.kwargs['pk'], groups__in=[1])
         class_group = ClassGroup.objects.filter(
             pk=self.kwargs['group_id'])[:1].get()
     except Person.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Student of requested id does not exist")
     except ClassGroup.DoesNotExist:
         raise GenericException(
             code=status.HTTP_404_NOT_FOUND,
             detail="Class group of requested id does not exist")
     student_enrollments = list(Enrollment.objects.filter(student=student))
     student_class_group_ids = list()
     for enrollment in student_enrollments:
         student_class_group_ids.append(enrollment.class_group.id)
     targets = list(
         ClassGroup.objects.filter(
             Q(course=class_group.course)
             & ~Q(pk=class_group.pk)
             & ~Q(pk__in=student_class_group_ids)))
     return Response(data=ClassGroupSerializer(targets, many=True).data,
                     status=status.HTTP_200_OK)