def modify_course(self, request, pk=None):
pref = 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
else:
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')
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 pref.bl_courses.filter(id=course.id).exists():
raise ContentError('Course "%s" already in blacklist.' % course_name)
pref.bl_courses.add(course)
elif request.method == 'DELETE':
if not pref.bl_courses.filter(id=course.id).exists():
raise ContentError('Course "%s" not in blacklist.' % course_name)
pref.bl_courses.remove(course)
genie.clear_cached_recommendations(pref.profile_id)
return Response({'success': True})
评论列表
文章目录