Skip to main content

A python library for building and/or consuming LTI apps

Project description

https://travis-ci.org/pylti/lti.svg?branch=master https://codecov.io/gh/pylti/lti/branch/master/graph/badge.svg Join the chat at https://gitter.im/pylti/lti Requirements Status

lti is a Python library implementing the Learning Tools Interperability (LTI) standard. It is based on dce_lti_py, which is based on ims_lti_py.

Installation

pip install lti

Dependencies

Usage

The primary goal of this library is to provide classes for building Python LTI tool providers (LTI apps). To that end, the functionality that you’re looking for is probably in the ToolConfig and ToolProvider classes (ToolConsumer is available too, if you want to consume LTI Providers).

Tool Config Example (Django)

Here’s an example of a Django view you might use as the configuration URL when registering your app with the LTI consumer.

from lti import ToolConfig
from django.http import HttpResponse


def tool_config(request):

    # basic stuff
    app_title = 'My App'
    app_description = 'An example LTI App'
    launch_view_name = 'lti_launch'
    launch_url = request.build_absolute_uri(reverse('lti_launch'))

    # maybe you've got some extensions
    extensions = {
        'my_extensions_provider': {
            # extension settings...
        }
    }

    lti_tool_config = ToolConfig(
        title=app_title,
        launch_url=launch_url,
        secure_launch_url=launch_url,
        extensions=extensions,
        description = app_description
    )

    # or you may need some additional LTI parameters
    lti_tool_config.cartridge_bundle = 'BLTI001_Bundle'
    lti_tool_config.cartridge_icon = 'BLTI001_Icon'
    lti_tool_config.icon = 'http://www.example.com/icon.png'

    return HttpResponse(lti_tool_config.to_xml(), content_type='text/xml')

Tool Provider OAuth Request Validation Example (Django)

from lti.contrib.django import DjangoToolProvider
from my_app import RequestValidator


# create the tool provider instance
tool_provider = DjangoToolProvider.from_django_request(request=request)

# the tool provider uses the 'oauthlib' library which requires an instance
# of a validator class when doing the oauth request signature checking.
# see https://oauthlib.readthedocs.org/en/latest/oauth1/validator.html for
# info on how to create one
validator = RequestValidator()

# validate the oauth request signature
ok = tool_provider.is_valid_request(validator)

# do stuff if ok / not ok

Tool Consumer Example (Django)

In your view:

def index(request):
    consumer = ToolConsumer(
        consumer_key='my_key_given_from_provider',
        consumer_secret='super_secret',
        launch_url='provider_url',
        params={
            'lti_message_type': 'basic-lti-launch-request'
        }
    )

    return render(
        request,
        'lti_consumer/index.html',
        {
            'launch_data': consumer.generate_launch_data(),
            'launch_url': consumer.launch_url
        }
    )

At the template:

<form action="{{ launch_url }}"
      name="ltiLaunchForm"
      id="ltiLaunchForm"
      method="POST"
      encType="application/x-www-form-urlencoded">
  {% for key, value in launch_data.items %}
    <input type="hidden" name="{{ key }}" value="{{ value }}"/>
  {% endfor %}
  <button type="submit">Launch the tool</button>
</form>

Testing

Unit tests can be run by executing

tox

This uses tox to set up and run the test environment.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lti-0.9.4.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

lti-0.9.4-py2.py3-none-any.whl (19.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file lti-0.9.4.tar.gz.

File metadata

  • Download URL: lti-0.9.4.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.3

File hashes

Hashes for lti-0.9.4.tar.gz
Algorithm Hash digest
SHA256 fe3452c220ceabf673fe0383bb1303d589780366c29c8c8fdec12a2c988b4266
MD5 3befc259c289d2bb2efd80ce68db1843
BLAKE2b-256 196d3f774e0379962c381e19a8e02dd704be8deb873d6d4cef13e04520bbfbe2

See more details on using hashes here.

File details

Details for the file lti-0.9.4-py2.py3-none-any.whl.

File metadata

  • Download URL: lti-0.9.4-py2.py3-none-any.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.3

File hashes

Hashes for lti-0.9.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 82cfb4724747906a0a014a1d9525b6aac1737fd530f962898f0e54edfccfcddf
MD5 b3e246ae4dadca372b2675de9a5dde11
BLAKE2b-256 a6adf4f9819fd5c87ef31176f6a5b626651dfd21857406bea0b15733c8e787c9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page