from rest_framework.exceptions import NotFound from university.api.base import Endpoint from university.models import Course class CourseEndpoint(Endpoint): def convert_args(self, request, course_slug, *args, **kwargs): try: course = Course.objects.get(slug=course_slug) except Course.DoesNotExist: raise NotFound if not (course.visable_when_no_perm or request.user.has_course(course)): raise NotFound kwargs['course'] = course return (args, kwargs) class CourseOnlineExamEndpoint(CourseEndpoint): def convert_args(self, request, course_slug, *args, **kwargs): args, kwargs = super(CourseOnlineExamEndpoint, self).convert_args( request, course_slug, *args, **kwargs) if not kwargs['course'].online_exam: raise NotFound kwargs['online_exam'] = kwargs['course'].online_exam return (args, kwargs)