def dispatch(self, request, *args, **kwargs): lti = LTI(self.request_type, self.role_type) # validate the user via oauth user = authenticate(request=request, lti=lti) if user is None: lti.clear_session(request) return render_to_response( 'lti_auth/fail_auth.html', {}, context_instance=RequestContext(request)) # check if course is configured try: ctx = lti.custom_course_context() except (KeyError, ValueError, LTICourseContext.DoesNotExist): lti.clear_session(request) return render_to_response( 'lti_auth/fail_course_configuration.html', {}, context_instance=RequestContext(request)) # add user to the course self.join_groups(lti, ctx, user) # login login(request, user) return super(LTIAuthMixin, self).dispatch(request, *args, **kwargs)
def test_custom_course_context(self): lti = LTI('initial', 'any') with self.assertRaises(KeyError): lti.custom_course_context() lti.lti_params = BASE_LTI_PARAMS lti.lti_params['custom_course_context'] = 434 with self.assertRaises(LTICourseContext.DoesNotExist): lti.custom_course_context() ctx = LTICourseContextFactory() lti.lti_params['custom_course_context'] = 'abc' with self.assertRaises(ValueError): lti.custom_course_context() lti.lti_params['custom_course_context'] = ctx.uuid with self.assertRaises(LTICourseContext.DoesNotExist): lti.custom_course_context() ctx.enable = True ctx.save() self.assertEquals(lti.custom_course_context(), ctx)