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)
Example #2
0
def assessment():
    if session['launch_params']:
        key = session['launch_params']['oauth_consumer_key']
    else:
        return render_template('error.html', message='The tool never launched')

    tool_provider = ToolProvider(key, oauth_creds[key], session['launch_params'])

    if not tool_provider.is_outcome_service():
        return render_template('error.html', message='The tool wasn\'t launched as an outcome service.')

    # Post the score to the ToolConsumer
    score = request.form.get('score')    
    response = tool_provider.post_replace_result(request.form.get('score'))
    print score
    tool_provider.lti_message = 'Message shown when arriving back at Tool Consumer.'
    return render_template('assessment_finished.html', score=score)