示例#1
0
 def test_course_detail(self):
     """
     Retrieve a course
     """
     url = reverse('course_detail', args=[1])
     response = self.client.get(url)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     response = response.json()
     course_json = CourseSerializer(self.course)
     self.assertEqual(response, course_json.data)
     """
     Update a course
     """
     data = {"tutor": 1}
     response = self.client.patch(url, data)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     response = response.json()
     self.course.tutor = self.user
     course_json = CourseSerializer(self.course)
     self.assertEqual(response, course_json.data)
     """
     Delete a course
     """
     self.assertEqual(Course.objects.count(), 1)
     self.client.delete(url)
     self.assertEqual(Course.objects.count(), 0)
示例#2
0
文件: views.py 项目: pixyj/feel
    def put(self, request, pk):
        course = get_course_or_404(pk)
        if course.created_by.id != request.user.id:
            return Response({"permission": "denied"}, status=status.HTTP_403_FORBIDDEN)


        serializer = CourseSerializer(data=request.data)
        if not serializer.is_valid():
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

        if request.user.id != course.created_by.id:
            return Response({"permission": "denied"}, status=status.HTTP_403_FORBIDDEN)

        validated_data = serializer.data
        audit_attrs = get_audit_attrs(course.created_by, request.user)
        validated_data.update(audit_attrs)

        previous_is_published = course.is_published
        course = serializer.update(course, validated_data)

        response = serializer.data
        if previous_is_published != course.is_published:
            #import ipdb; ipdb.set_trace()
            response = dict(serializer.data)
            if course.is_published:
                courseslug = course.publish_and_slugify()
            else:
                courseslug = None
                course.unpublish()
            if courseslug is not None:
                response['slug'] = courseslug.slug
            else:
                response['slug'] = None
                
        return Response(response, status.HTTP_200_OK)
示例#3
0
 def put_course(self, ex_id: int, data: dict):
     des = CourseRepository.get_course_detail(self, ex_id=ex_id)
     serializer = CourseSerializer(des, data=data)
     if serializer.is_valid():
         serializer.save()
         return CourseRepository.put_course(self, ex_id=ex_id, data=data)
     return serializer.errors, status.HTTP_400_BAD_REQUEST
示例#4
0
def createcourse(request):

    course_data = JSONParser().parse(request)
    course_serializer = CourseSerializer(data=course_data)
    if course_serializer.is_valid():
        course_serializer.save()
        return JsonResponse(course_serializer.data,
                            status=status.HTTP_201_CREATED)
    return JsonResponse(course_serializer.errors,
                        status=status.HTTP_400_BAD_REQUEST)
示例#5
0
 def put(self, request, pk):
     obj = self.get_object(pk=pk)
     if obj:
         ser = CourseSerializer(instance=obj, data=request.data)
         if ser.is_valid():
             ser.save()
             return Response(data=ser.data, status=status.HTTP_200_OK)
         return Response(data=ser.errors,
                         status=status.HTTP_400_BAD_REQUEST)
     return Response(data={"msg": "没有此课程信息"},
                     status=status.HTTP_404_NOT_FOUND)
示例#6
0
文件: views.py 项目: pixyj/feel
    def post(self, request):

        serializer = CourseSerializer(data=request.data)
        if not serializer.is_valid():
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

        validated_data = serializer.data
        audit_attrs = get_audit_attrs(request.user)
        validated_data.update(audit_attrs)
        
        course = serializer.create(validated_data)
        serializer = CourseSerializer(course)
        return Response(serializer.data, status.HTTP_201_CREATED)
示例#7
0
def updatecourse(request, id):
    try:
        course = Course.objects.get(id=id)

    except Course.DoesNotExist:
        return JsonResponse({'message': 'The tutorial does not exist'},
                            status=status.HTTP_404_NOT_FOUND)

    course_data = JSONParser().parse(request)
    course_serializer = CourseSerializer(course, data=course_data)
    if course_serializer.is_valid():
        course_serializer.save()
        return JsonResponse(course_serializer.data)
    return JsonResponse(course_serializer.errors,
                        status=status.HTTP_400_BAD_REQUEST)
示例#8
0
    def post(request, cou_id):
        try:
            cou = course.objects.get(pk=cou_id)
        except cou.DoesNotExist:
            errors = "Error!"
            return HttpResponse(status=400)

        # if request.method == 'GET':
        #     serializer = CourseSerializer(cou)
        #     return JSONResponse(serializer.data)
        data = JSONParser().parse(request)
        serializer = CourseSerializer(cou, data=data)
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(serializer.data)
        return JSONResponse(serializer.errors, status=400)
示例#9
0
 def put(self, request, *args, **kwargs):
     user = request.user
     data = request.data
     pk = kwargs['pk']
     course = get_object_or_404(Course, pk=pk)
     if not course.is_authorized(request.user):
         return Response(status=401)
     content = course.description
     content_data = {
         'text': data['text'],
         "last_edited_at": datetime.datetime.now()
     }
     if "file" in request.FILES:
         file = request.FILES['file']
         content_data['file'] = file
     serializer = ContentSerializer(content, data=content_data)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     course_data = {
         "title": data['title'],
         "owner": course.owner.pk,
         "description": course.description.pk,
         "last_edited_at": datetime.datetime.now()
     }
     serializer = CourseSerializer(course, data=course_data)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(serializer.data, status=HTTP_200_OK)
示例#10
0
 def get(self, request, pk):
     obj = self.get_object(pk=pk)
     if obj:
         ser = CourseSerializer(instance=obj)
         return Response(data=ser.data, status=status.HTTP_200_OK)
     return Response(data={"msg": "没有此课程信息"},
                     status=status.HTTP_404_NOT_FOUND)
class QuizSerializer(serializers.ModelSerializer):
    course = CourseSerializer(read_only=True)

    class Meta:
        model = Quiz
        fields = '__all__'
        read_only_fields = ['pk']
示例#12
0
    def courses(self, request, pk):
        sort = request.GET.get('sort', '')
        filter = request.GET.get('filter', '')

        if pk != 'all':
            course_info = CourseInfo.objects.filter(category_id=pk, active=1)
        else:
            course_info = CourseInfo.objects.filter(active=1)

        if 'free' in filter:
            course_info = course_info.filter(money=0)

        if 'update_at' in sort:
            course_list = course_info.order_by('-start_time')
        else:
            course_list = course_info.order_by('-create_time')
        if 'sales' in sort:
            course_info = []
            for i in course_list:
                count = MyCourse.objects.filter(course_id=i.course_id).count()
                course_info.append({'course_id': i.course_id, 'count': count})

            course_info.sort(key=lambda k: (k.get('count', 0)), reverse=True)
            course_list = []
            for c in course_info:
                course = CourseInfo.objects.get(course_id=c['course_id'])
                course_list.append(course)

        if 'selection' in sort:
            course_list = course_info.filter(select_status=SELECT_STATUS_ON)

        page = self.paginate_queryset(course_list)
        serializer = CourseSerializer(page, many=True)
        return self.get_paginated_response(serializer.data)
示例#13
0
 def test_Course_get_valid_single(self):
     url = reverse('CourseDetailUrl', kwargs={'pk': self.course.pk})
     response = client.get(url)
     course = Course.objects.get(pk=self.course.pk)
     serializer = CourseSerializer(course)
     assert response.data == serializer.data
     assert response.status_code == status.HTTP_200_OK
示例#14
0
class StudentCourseSerializer(serializers.ModelSerializer):
    """Student's Course model serializer."""
    course = CourseSerializer(required=False)

    class Meta:
        model = StudentCourse
        fields = '__all__'
示例#15
0
def getcourses(request):
    courses = Course.objects.all()
    title = request.GET.get('title', None)
    if title is not None:
        courses = courses.filter(title__icontains=title)

    courses_serializer = CourseSerializer(courses, many=True)
    return JsonResponse(courses_serializer.data, safe=False)
示例#16
0
 def test_get_courses(self):
     self.client.credentials(HTTP_AUTHORIZATION='')
     url = reverse('course_list')
     response = self.client.get(url)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     response = response.json()
     course_json = CourseSerializer(self.course)
     self.assertEqual(response[0], course_json.data)
示例#17
0
def course_detail(request, pk):
    """
    获取、更新、删除单条课程
    :param request:
    :param pk:
    :return:
    """
    try:
        course = Course.objects.get(pk=pk)
    except Course.DoesNotExist:
        return Response(data={"msg": "没有此课程信息"},
                        status=status.HTTP_404_NOT_FOUND)
    else:

        if request.method == "GET":
            ser = CourseSerializer(instance=course)
            return Response(data=ser.data, status=status.HTTP_200_OK)
        elif request.method == "PUT":
            ser = CourseSerializer(instance=course, data=request.data)
            if ser.is_valid():
                ser.save()
                return Response(data=ser.data, status=status.HTTP_200_OK)
            return Response(data=ser.errors,
                            status=status.HTTP_400_BAD_REQUEST)
        elif request.method == "DELETE":
            course.delete()
            return Response(status=status.HTTP_204_NO_CONTENT)
示例#18
0
    def get(self, request, format=None):
        try:
            course_name = request.GET['coursename']
            courses = Course.objects.filter(name__icontains=course_name)
        except KeyError:
            return Response(status=status.HTTP_400_BAD_REQUEST)

        serializer = CourseSerializer(courses, many=True)
        return Response(serializer.data)
示例#19
0
class AchievementSerializer(serializers.ModelSerializer):
    """Achievement model serializer."""
    related_courses = CourseSerializer(required=False, many=True)
    related_educators = EducatorSerializer(required=False, many=True)
    related_students = StudentSerializer(required=False, many=True)
    related_parents = ParentSerializer(required=False, many=True)

    class Meta:
        model = Achievement
        fields = '__all__'
示例#20
0
def getmycourse(request, id):

    try:
        course = Course.objects.get(id=id)

    except Course.DoesNotExist:
        return JsonResponse({'message': 'The tutorial does not exist'},
                            status=status.HTTP_404_NOT_FOUND)
    course_serializer = CourseSerializer(course)
    return JsonResponse(course_serializer.data)
示例#21
0
    def get(self, request, format=None):
        try:
            course_name = request.GET['coursename']
            course = Course.objects.get(name=course_name)
        except KeyError:
            return Response(status=status.HTTP_400_BAD_REQUEST)
        except Course.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        serializer = CourseSerializer(course)
        return Response(serializer.data)
示例#22
0
class StudentSerializer(serializers.ModelSerializer):
    #courses = serializers.RelatedField(source='course', read_only=True)
    # courses = serializers.PrimaryKeyRelatedField(
    #     queryset=Course.objects.all(), many=True)

    #course = serializers.ManyRelatedField(child_relation=Course.objects.all())
    courses = CourseSerializer(many=True, read_only=True)

    class Meta:
        model = Student
        fields = ('id', 'name', 'courses')
示例#23
0
    def get(self, request):
        """
        查询历史课程
        """
        data = {}
        id = request.GET.get('id', None)

        if id is not None:
            course = get_object_or_404(Course, id=id)
            serializer = CourseSerializer(course)
            return JsonResponse({"courses": [serializer.data]}, safe=False)

        student_username = request.GET.get('student_username', None)
        if student_username is not None:
            student = get_object_or_404(Student, user__username=student_username)
            courses = student.courses.all()
            serializer = CourseSerializer(courses, many=True)
            return JsonResponse({"courses": serializer.data}, safe=False)

        teacher_username = request.GET.get('teacher_username', None)
        if teacher_username is not None:
            teacher = get_object_or_404(Teacher, user__username=teacher_username)
            courses = teacher.courses.all()
            serializer = CourseSerializer(courses, many=True)
            return JsonResponse({"courses": serializer.data}, safe=False)
        
        cm_username = request.GET.get('cm_username', None)
        if cm_username is not None:
            cm = get_object_or_404(CM, user__username=cm_username)
            courses = cm.courses.all()
            serializer = CourseSerializer(courses, many=True)
            return JsonResponse({"courses": serializer.data}, safe=False)

        offering_course_id = request.GET.get('offering_course_id', None)
        if offering_course_id is not None:
            courses = Course.objects.filter(offering_course=offering_course_id)
            serializer = CourseSerializer(courses, many=True)
            return JsonResponse({"courses": serializer.data}, safe=False)

        raise ParseError()
示例#24
0
def course_list(request):
    if request.method == 'GET':
        courses = Course.objects.all()

        title = request.GET.get('title', None)
        if title is not None:
            courses = courses.filter(title__icontains=title)

        courses_serializer = CourseSerializer(courses, many=True)
        return JsonResponse(courses_serializer.data, safe=False)
        # 'safe=False' for objects serialization

    elif request.method == 'POST':
        course_data = JSONParser().parse(request)
        course_serializer = CourseSerializer(data=course_data)
        if course_serializer.is_valid():
            course_serializer.save()
            return JsonResponse(course_serializer.data,
                                status=status.HTTP_201_CREATED)
        return JsonResponse(course_serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        count = Course.objects.all().delete()
        return JsonResponse(
            {
                'message': '{} Courses were deleted successfully!'.format(
                    count[0])
            },
            status=status.HTTP_204_NO_CONTENT)
示例#25
0
文件: oj.py 项目: oneofsunshine/OUCOJ
 def get(self, request):
     id = request.GET.get("id")
     if not id or not check_is_id(id):
         return self.error("Invalid parameter, id is required")
     try:
         contest = Contest.objects.get(id=id, visible=True)
     except Contest.DoesNotExist:
         return self.error("Contest does not exist")
     data = ContestSerializer(contest).data
     data["now"] = datetime2str(now())
     courses = contest.course_set.all().order_by("-s_year")
     data["course"] = CourseSerializer(courses, many=True).data
     return self.success(data)
示例#26
0
    def put(self, request, pk):
        course = get_course_or_404(pk)
        if course.created_by.id != request.user.id:
            return Response({"permission": "denied"},
                            status=status.HTTP_403_FORBIDDEN)

        serializer = CourseSerializer(data=request.data)
        if not serializer.is_valid():
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

        if request.user.id != course.created_by.id:
            return Response({"permission": "denied"},
                            status=status.HTTP_403_FORBIDDEN)

        validated_data = serializer.data
        audit_attrs = get_audit_attrs(course.created_by, request.user)
        validated_data.update(audit_attrs)

        previous_is_published = course.is_published
        course = serializer.update(course, validated_data)

        response = serializer.data
        if previous_is_published != course.is_published:
            #import ipdb; ipdb.set_trace()
            response = dict(serializer.data)
            if course.is_published:
                courseslug = course.publish_and_slugify()
            else:
                courseslug = None
                course.unpublish()
            if courseslug is not None:
                response['slug'] = courseslug.slug
            else:
                response['slug'] = None

        return Response(response, status.HTTP_200_OK)
示例#27
0
    def get(self, request):

        if request.user.is_authenticated:
            user = request.user
            users_courses = Course.objects.filter(students=user)
            course_serializer = CourseSerializer(users_courses, many=True)
            user_serializer = UserProfileSerializer(user)

            course_data = course_serializer.data
            user_data = user_serializer.data
            return Response(data=(course_data, user_data),
                            status=status.HTTP_200_OK)

        else:
            return Response({"message": "User is not authenticated"},
                            status=status.HTTP_400_BAD_REQUEST)
示例#28
0
 def to_representation(self, value):
     if isinstance(value, Student): 
         serializer = StudentSerializer(value)
     elif isinstance(value, Instructor):
         serializer = InstructorSerializer(value)
     elif isinstance(value, Parent):
         serializer = ParentSerializer(value)
     elif isinstance(value, Admin):
         serializer = AdminSerializer(value)
     elif isinstance(value, Course):
         serializer = CourseSerializer(value)
     elif isinstance(value, Session):
         serializer = SessionSerializer(value)
     else:
         raise Exception("Not recognized model instance!")
     return serializer.data
示例#29
0
    def get(self, request, pk, format=None):
        """
        Get course by course_id
        """
        course = get_course_or_404(pk)

        if not course.is_published and request.user != course.created_by:
            return Response(
                {
                    "Have": "a little patience",
                    "url": "https://youtu.be/273eSvOwpKk"
                },
                status=status.HTTP_403_FORBIDDEN)

        serializer = CourseSerializer(course)
        data = serializer.data
        return Response(data)
示例#30
0
def course_list(request):
    """
    获取所有课程信息或新增单条课程信息
    :param request:
    :return:
    """
    if request.method == "GET":
        ser = CourseSerializer(instance=Course.objects.all(), many=True)
        return Response(data=ser.data, status=status.HTTP_200_OK)

    elif request.method == "POST":
        ser = CourseSerializer(data=request.data, partial=True)
        if ser.is_valid():
            ser.save(teacher=request.user)
            return Response(data=ser.data, status=status.HTTP_201_CREATED)
        return Response(data=ser.errors, status=status.HTTP_400_BAD_REQUEST)
示例#31
0
 def post(self, request):
     """
     增加历史课程
     """
     res = {"courses": []}
     with transaction.atomic():
         for data in JSONParser().parse(request)["courses"]:
             if data.get("id", None) is not None:
                 raise ParseError("不能有主键")  # 增加不能有主键
             data["offering_course"] = get_object_or_404(OfferingCourse, id=data["offering_course"])
             teachers = Teacher.objects.filter(user__username__in=[tea["username"] for tea in data.pop("teachers")])
             cms = CM.objects.filter(user__username__in=[cm["username"] for cm in data.pop("cms")])
             course = Course.objects.create(**data)
             course.teachers.set(teachers)
             course.cms.set(cms)
             serializer = CourseSerializer(course)
             res["courses"].append(serializer.data)
     return JsonResponse(res, status=200, safe=False)
示例#32
0
 def post(self, request, *args, **kwargs):
     user = request.user
     data = request.data
     content = {'text': data['text']}
     if "file" in request.FILES:
         file = request.FILES['file']
         content['file'] = file
     serializer = ContentSerializer(data=content)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     course = {
         "title": data['title'],
         "owner": user.pk,
         "description": serializer.instance.pk
     }
     serializer = CourseSerializer(data=course)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(serializer.data, status=HTTP_200_OK)