from rest_framework.exceptions import NotFound from university.api.base import Endpoint from university.models import Chapter class ChapterEndpoint(Endpoint): def convert_args(self, request, course_slug, chapter_slug, *args, **kwargs): try: chapter = Chapter.objects.select_related('course').get( slug=chapter_slug, course__slug=course_slug) course = chapter.course except Chapter.DoesNotExist: raise NotFound if not (course.visable_when_no_perm or request.user.has_course(course)): raise NotFound self.check_object_permissions(request, chapter) kwargs['course'] = chapter.course kwargs['chapter'] = chapter return (args, kwargs)