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", )
class CourseEnrollSerializer(serializers.ModelSerializer): learner = UserSerializer(read_only=True) created_by = UserSerializer(read_only=True) data = JSONField() class Meta: model = CourseEnroll exclude = ("data", )
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", )
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)
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)
class MyStatisticSerializer(serializers.ModelSerializer): lesson = LessonForPupilSerializer(read_only=True) learner = UserSerializer(read_only=True) data = JSONField() class Meta: model = Statistic
class CourseEnrollForPupilSerializer(serializers.ModelSerializer): created_by = UserSerializer(read_only=True) course = CourseForPupilSerializer(read_only=True) class Meta: model = CourseEnroll exclude = ("data", )
class LessonEnrollForPupilSerializer(serializers.ModelSerializer): created_by = UserSerializer(read_only=True) lesson = LessonForPupilSerializer(read_only=True) class Meta: model = LessonEnroll exclude = ("data", )
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
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', )
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)
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)
class StatisticSerializer(serializers.ModelSerializer): lesson = LessonForStatisticSerializer(read_only=True) learner = UserSerializer(read_only=True) class Meta: model = Statistic
class CourseForStatisticSerializer(serializers.ModelSerializer): created_by = UserSerializer(read_only=True) class Meta: model = Course exclude = ('teacher', )