views.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:CourseGenie 作者: panchr 项目源码 文件源码
def modify_course(self, request, pk=None):
        semester = self.get_object()

        search_kwargs = {}
        course_name = ''
        if 'course_id' in request.query_params:
            course_name = request.query_params['course_id']
            search_kwargs['course_id'] = course_name
        elif 'short_name' in request.query_params:
            course_name = request.query_params['short_name']
            short_name = COURSE_RE.match(course_name)
            if not short_name:
                raise NotAcceptable(detail='short_name field does not match pattern.')

            search_kwargs['number'] = short_name.group('num')
            search_kwargs['department'] = short_name.group('dept')
            if short_name.group('letter'):
                search_kwargs['letter'] = short_name.group('letter')
        else:
            raise NotAcceptable(detail='short_name or course_id parameter required.')

        try:
            course = Course.objects.get(**search_kwargs)
        except Course.DoesNotExist:
            raise NotFound('Course "%s" not found.' % course_name)

        if request.method == 'POST':
            # check if already there, and if so, raise 409
            if semester.courses.filter(id=course.id).exists():
                raise ContentError('Course "%s" already in semester.' % course_name)

            semester.courses.add(course)
        elif request.method == 'DELETE':
            if not semester.courses.filter(id=course.id).exists():
                raise ContentError('Course "%s" not in semester.' % course_name)

            semester.courses.remove(course)

        genie.clear_cached_recommendations(semester.calendar.profile_id)
        serializer = CourseSerializer(course)
        return Response(serializer.data)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号