Example #1
0
File: lessons.py Project: TmLev/dal
class LessonSerializer(WritableNestedModelSerializer):
    subject = LessonSubjectSerializer()
    milgroup = MilgroupSerializer()

    class Meta:
        model = Lesson
        fields = '__all__'
Example #2
0
    def get(self, request: Request) -> Response:
        query_params = AbsenceJournalQuerySerializer(data=request.query_params)
        if not query_params.is_valid():
            return Response(query_params.errors, status=HTTP_400_BAD_REQUEST)

        # final json
        data = {}

        # add milgroup data
        milgroup = MilgroupSerializer(
            Milgroup.objects.get(
                milgroup=request.query_params['milgroup'])).data
        data['milgroup'] = milgroup

        # calculate dates
        date_from = datetime.fromisoformat(query_params.data['date_from'])
        date_to = datetime.fromisoformat(query_params.data['date_to'])

        date_range = get_date_range(date_from, date_to, milgroup['weekday'])

        # add dates and absences
        data['dates'] = date_range
        data['students'] = AbsenceJournalSerializer(
            Student.objects.filter(
                milgroup__milgroup=request.query_params['milgroup']),
            context={
                'request': request,
                'date_range': date_range,
            },
            many=True).data

        return Response(data, status=HTTP_200_OK)
Example #3
0
class LessonSerializer(WritableNestedModelSerializer):
    subject = LessonSubjectSerializer(
        required=False, validators=[PresentInDatabaseValidator(Subject)])
    milgroup = MilgroupSerializer(
        required=False, validators=[PresentInDatabaseValidator(Milgroup)])

    class Meta:
        model = Lesson
        fields = '__all__'
Example #4
0
class TeacherSerializer(WritableNestedModelSerializer):
    fullname = SerializerMethodField(required=False)
    milgroup = MilgroupSerializer()

    def get_fullname(self, obj):
        return f'{obj.surname} {obj.name} {obj.patronymic}'

    class Meta:
        model = Teacher
        fields = '__all__'
Example #5
0
class StudentShortSerializer(ModelSerializer):
    fullname = SerializerMethodField(required=False)
    milgroup = MilgroupSerializer(required=False)

    def get_fullname(self, obj):
        return f"{obj.surname} {obj.name} {obj.patronymic}"

    class Meta:
        model = Student
        fields = ["id", "fullname", "milgroup"]
Example #6
0
class TeacherShortSerializer(WritableNestedModelSerializer):
    id = IntegerField(required=False)
    fullname = SerializerMethodField(required=False)
    milgroup = MilgroupSerializer(
        required=False,
        many=False,
        validators=[PresentInDatabaseValidator(Milgroup)])

    def get_fullname(self, obj):
        return f'{obj.surname} {obj.name} {obj.patronymic}'

    class Meta:
        model = Teacher
        fields = ['id', 'fullname', 'milgroup']
Example #7
0
class StudentSerializer(WritableNestedModelSerializer):
    milgroup = MilgroupSerializer(
        required=False, validators=[PresentInDatabaseValidator(Milgroup)])
    program = ProgramSerializer(
        required=False, validators=[PresentInDatabaseValidator(Program)])

    fullname = SerializerMethodField(required=False)

    class Meta:
        model = Student
        fields = '__all__'

    def get_fullname(self, obj):
        return f'{obj.surname} {obj.name} {obj.patronymic}'
Example #8
0
class StudentSerializer(WritableNestedModelSerializer):
    milgroup = MilgroupSerializer()
    university_info = UniversityInfoSerializer()
    photo = PhotoSerializer(read_only=True)
    birth_info = BirthInfoSerializer(read_only=True)
    application_process = ApplicationProcessSerializer(read_only=False)
    student_skills = StudentSkillSerializer(many=True)

    fullname = SerializerMethodField()

    class Meta:
        model = Student
        fields = "__all__"

    def get_fullname(self, obj):
        return f"{obj.surname} {obj.name} {obj.patronymic}"
Example #9
0
File: marks.py Project: TmLev/dal
    def get(self, request: Request) -> Response:
        query_params = MarkJournalQuerySerializer(data=request.query_params)
        if not query_params.is_valid():
            return Response(query_params.errors, status=HTTP_400_BAD_REQUEST)

        # final json
        data = {}

        # add milgroup data
        milgroup = MilgroupSerializer(
            Milgroup.objects.get(
                milgroup=request.query_params['milgroup'])).data
        data['milgroup'] = milgroup

        subject_query = Subject.objects.get(id=request.query_params['subject'])
        subject = LessonSubjectSerializer(subject_query).data
        data['subject'] = subject

        # calculate dates
        date_from = datetime.fromisoformat(query_params.data['date_from'])
        date_to = datetime.fromisoformat(query_params.data['date_to'])

        # date_range = get_date_range(date_from, date_to, milgroup['weekday'])
        lessons = Lesson.objects.filter(
            date__lte=date_to,
            date__gte=date_from,
            milgroup=request.query_params['milgroup'],
            subject=request.query_params['subject']).order_by(
                'date', 'ordinal')
        data['lessons'] = LessonSerializer(lessons, many=True).data
        date_range = list({item.date for item in lessons})

        # add dates and absences
        data['dates'] = sorted(date_range)
        data['students'] = MarkJournalSerializer(Student.objects.filter(
            milgroup__milgroup=request.query_params['milgroup']),
                                                 context={
                                                     'request': request,
                                                     'date_range': date_range,
                                                     'subject':
                                                     subject_query.id
                                                 },
                                                 many=True).data

        return Response(data, status=HTTP_200_OK)
Example #10
0
    def get(self, request: Request) -> Response:
        query_params = LessonJournalGetQuerySerializer(
            data=request.query_params)
        if not query_params.is_valid():
            return Response(query_params.errors, status=HTTP_400_BAD_REQUEST)

        # final json
        data = {}

        # add milgroup data
        milgroup = MilgroupSerializer(
            Milgroup.objects.get(
                milgroup=request.query_params['milgroup'])).data
        data['milgroup'] = milgroup

        # calculate dates
        date_from = datetime.fromisoformat((query_params.data['date_from']))
        date_to = datetime.fromisoformat((query_params.data['date_to']))

        date_range = get_date_range(date_from, date_to, milgroup['weekday'])
        data['dates'] = date_range

        # sort lessons by date and milgroup
        lessons_filtered = Lesson.objects.filter(
            milgroup=request.query_params['milgroup'],
            date__gte=request.query_params['date_from'],
            date__lte=request.query_params['date_to'])

        # ordinals
        ordinals = []
        for ordinal in range(1, 11):
            lessons = dict()
            lessons['ordinal'] = ordinal
            lessons['lessons'] = LessonSerializer(
                lessons_filtered.filter(ordinal=ordinal), many=True).data
            ordinals.append(lessons)

        data['ordinals'] = ordinals

        return Response(data, status=HTTP_200_OK)