Example #1
0
def lti_tool():
    key = request.form.get('oauth_consumer_key')
    if key:
        secret = oauth_creds.get(key)
        if secret:
            tool_provider = ToolProvider(key, secret, request.form)
        else:
            tool_provider = ToolProvider(None, None, request.form)
            tool_provider.lti_msg = 'Your consumer didn\'t use a recognized key'
            tool_provider.lti_errorlog = 'You did it wrong!'
            return render_template('error.html', message = 'Consumer key wasn\'t recognized', params = request.form)
    else:
        return render_template('error.html', message='No consumer key')

    if not tool_provider.is_launch_request():
        print 'invalid request'
        return render_template('error.html', message='OAuth signature was invalid', params=request.form)

    if time() - int(tool_provider.oauth_timestamp) > 60*60:
        print 'timed out'
        return render_template('error.html', message='Your request is too old.')

    if was_nonce_used_in_last_x_minutes(tool_provider.oauth_nonce, 60):
        print 'nonce error'
        return render_template('error.html', message='Why are you reusing the nonce?')

    session['launch_params'] = tool_provider.to_params()
    username = tool_provider.username('Dude')

    if tool_provider.is_outcome_service():
        return render_template('assessment.html', username=username)
    else:
        tool_provider.lti_msg = 'This tool does not return a score.'
        return render_template('boring_tool', username=username, student=tool_provider.is_student(), instructor=tool_provider.is_teacher(),
                roles=tool_provider.roles, launch_presentation_return_url=tool_provider.launch_presentation_return_url)