views.py 文件源码

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

项目:CourseGenie 作者: panchr 项目源码 文件源码
def modify_sandbox(self, request, pk=None):
        calendar = 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 calendar.sandbox.filter(id=course.id).exists():
                raise ContentError('Course "%s" already in sandbox.' % course_name)

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

            calendar.sandbox.remove(course)

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


问题


面经


文章

微信
公众号

扫码关注公众号