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)
评论列表
文章目录