コード例 #1
0
class EnrollForCourseSerializer(serializers.ModelSerializer):
    learner = UserSerializer(read_only=True)
    created_by = UserSerializer(read_only=True)
    teachers = UserSerializer(many=True, read_only=True)

    class Meta:
        model = LessonEnroll
        exclude = ("data", )
コード例 #2
0
class CourseEnrollSerializer(serializers.ModelSerializer):
    learner = UserSerializer(read_only=True)
    created_by = UserSerializer(read_only=True)
    data = JSONField()

    class Meta:
        model = CourseEnroll
        exclude = ("data", )
コード例 #3
0
class LessonEnrollSerializer(serializers.ModelSerializer):
    created_at = serializers.DateTimeField()
    updated_at = serializers.DateTimeField()
    learner = UserSerializer(read_only=True)
    created_by = UserSerializer(read_only=True)
    data = JSONField()
    lesson = LessonForEnrollSerializer(read_only=True)

    class Meta:
        model = LessonEnroll
        exclude = ("data", )
コード例 #4
0
def create_pupil(request):

    if not request.user.is_authenticated():
        return Response(status=status.HTTP_200_OK)

    data = json.loads(request.body.decode("utf-8"))
    lesson_id = data.get('lesson_id')
    email = data.get('email')
    if validateEmail(email) is False:
        return Response("Неверный формат email", status=status.HTTP_400_BAD_REQUEST)

    lesson = get_object_or_404(Lesson, pk=lesson_id, created_by=request.user)
    pupil, created = Account.objects.get_or_create(email__iexact=email)
    if created:
        pupil.email = email
        pupil.username = email
        pupil.account_type = 2
        pupil.save()

    try:
        LessonEnroll.objects.get(lesson=lesson, learner=pupil)
    except LessonEnroll.DoesNotExist:
        LessonEnroll.objects.create(lesson=lesson, learner=pupil, created_by=request.user)

    request.user.pupils.add(pupil)
    return Response(UserSerializer(pupil).data, status=status.HTTP_200_OK)
コード例 #5
0
def get_avatar(request):
    """
    возвращет аватар
    """
    if request.method == "GET":
        print request.GET
        email = request.GET.get('email').decode("utf-8")
        if email:
            try:
                user = Account.objects.get(email=email)
            except Account.DoesNotExist:
                return Response("OK", status=status.HTTP_200_OK)
            if user:
                data = UserSerializer(user).data
                return Response(data.get('thumbnail_avatar'), status=status.HTTP_200_OK)
        return Response("OK", status=status.HTTP_200_OK)
コード例 #6
0
class MyStatisticSerializer(serializers.ModelSerializer):
    lesson = LessonForPupilSerializer(read_only=True)
    learner = UserSerializer(read_only=True)
    data = JSONField()

    class Meta:
        model = Statistic
コード例 #7
0
class CourseEnrollForPupilSerializer(serializers.ModelSerializer):
    created_by = UserSerializer(read_only=True)
    course = CourseForPupilSerializer(read_only=True)

    class Meta:
        model = CourseEnroll
        exclude = ("data", )
コード例 #8
0
class LessonEnrollForPupilSerializer(serializers.ModelSerializer):
    created_by = UserSerializer(read_only=True)
    lesson = LessonForPupilSerializer(read_only=True)

    class Meta:
        model = LessonEnroll
        exclude = ("data", )
コード例 #9
0
class LessonForCourseSerializer(serializers.ModelSerializer):
    pages = PageSerializer(many=True, read_only=True)
    enrolls = EnrollForCourseSerializer(many=True, read_only=True)
    teacher = UserSerializer(many=True, read_only=True)
    code_errors = JSONField()

    class Meta:
        model = Lesson
コード例 #10
0
class CourseSerializer(serializers.ModelSerializer):
    created_by = UserSerializer(read_only=True)
    lessons = LessonForCourseSerializer(source='lesson_set',
                                        many=True,
                                        read_only=True)
    code_errors = JSONField()
    enroll_number = serializers.ReadOnlyField()

    class Meta:
        model = Course
        exclude = ('teacher', )
コード例 #11
0
def user_data(request):
    """
    Данные о пользователе
    """
    if not request.user.is_authenticated():
        return Response({'username': '******', 'is_authenticated': False})
    if request.user.is_org:
        data = AdminSerializer(request.user).data
    else:
        data = UserSerializer(request.user).data
    data['is_authenticated'] = True
    return Response(data)
コード例 #12
0
def statistic(request, statistic_pk):
    """
    Запрос на статтистику по ученикам
    """
    if not request.user.is_authenticated():
        return Response([], status=status.HTTP_200_OK)
    pupils = Statistic.objects.filter(Q(lesson__teacher=request.user) | Q(lesson__course__teacher=request.user))

    if request.method == "GET":
        dic_pupils = {}
        for p in pupils:
            if p.learner:
                if p.learner.id in dic_pupils:
                    enrolls = dic_pupils[p.learner.id].get('enrolls', [])
                    enrolls.append(StatisticSerializer(p).data)
                    dic_pupils[p.learner.id]['enrolls'] = enrolls
                else:
                    dic_pupils[p.learner.id] = {
                        'learner': UserSerializer(p.learner).data,
                        'enrolls': [StatisticSerializer(p).data]
                    }
        a = []
        for key, value in dic_pupils.items():
            a.append(value)
        paginator = ListPagination()
        result_page = paginator.paginate_queryset(a, request)

        return paginator.get_paginated_response(result_page)

    if request.method == "DELETE" and statistic_pk:
        try:
            s = Statistic.objects.filter(Q(lesson__teacher=request.user) | Q(lesson__course__teacher=request.user), pk=statistic_pk).distinct()
            s.delete()
        except Statistic.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)
        return Response("OK", status=status.HTTP_200_OK)
コード例 #13
0
class StatisticSerializer(serializers.ModelSerializer):
    lesson = LessonForStatisticSerializer(read_only=True)
    learner = UserSerializer(read_only=True)

    class Meta:
        model = Statistic
コード例 #14
0
class CourseForStatisticSerializer(serializers.ModelSerializer):
    created_by = UserSerializer(read_only=True)

    class Meta:
        model = Course
        exclude = ('teacher', )