An app for storing LTI provider configurations centrally.
Project description
Openedx LTI Store
A plugin for openedx-platform to store LTI configurations centrally. This allows course creators to add LTI components without having to enter the details like secrets, keys and URLs everytime the component block is created.
Development
The development instructions are written with the Open edX Devstack as reference.
- Clone the repostiory to
<devstack_root>/src/directorycd <devstack_root>/src/ git clone git@github.com:open-craft/openedx-ltistore.git
- Install the plugin inside the Studio container and run migrations
cd <devstack_root>/devstack/ make studio-shell pip install -e /edx/src/openedx-ltistore python manage.py cms migrate lti_store exit
- Install the plugin inside the LMS Container
make lms-shell pip install -e /edx/src/openedx-ltistore exit
- The LTI Consumer XBlock can fetch configurations to LTI Tools using
openedx-filtersmechanism. It calls the filterorg.openedx.xblock.lti_consumer.configuration.listed.v1whenever it wants to fetch the configurations from external tools like plugins. In order for LTI Store to send available LTI Tools, add the following to any existingopenedx-filtersconfigurations for both LMS (edx-platform/lms/envs/devstack.pyorprivate.py) and studio (edx-platform/cms/envs/devstack.py):OPEN_EDX_FILTERS_CONFIG = { "org.openedx.xblock.lti_consumer.configuration.listed.v1": { "fail_silently": False, "pipeline": [ "lti_store.pipelines.GetLtiConfigurations" ] } }
- Restart the LMS & Studio for the latest config to take effect
make lms-restart make studio-restart
Now any changes made to the source code should reflect in the application
Adding LTI Tools to the store
- Go to
http://localhost:18000/admin - Look for
LTI_STOREand add External lti configurations by clicking+ Addbutton
Use configuration on LTI consumer XBlock
- Go to
http://localhost:18000/admin - Look for
LTI_STOREand go to External lti configurations - On the list of external LTI configurations, note down the "Filter Key" value
of the configuration to use (Example:
lti_store:1). - Copy "Filter Key" to the "External ID" field on the LTI consumer XBlock.
Linting
The project uses Black for linting. To lint the code
make lint
Testing
Unit tests can be run with
make test
Change Log
Unreleased
1.1.0 – 2025-05-21
Added
- Initial release to PyPI.
- CI pipelines.
- Django 5.2 support.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openedx_ltistore-1.1.0.tar.gz.
File metadata
- Download URL: openedx_ltistore-1.1.0.tar.gz
- Upload date:
- Size: 21.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9148197207932a244d7f10175c632d9c284dee61528e723fcc7fab5e453e730
|
|
| MD5 |
bd75b7756fb10b16ba2074a38ca7bf60
|
|
| BLAKE2b-256 |
44af3b28fe19b903207c5e99121067a541fe044176528c1f874bcc74d9f5ef63
|
File details
Details for the file openedx_ltistore-1.1.0-py2.py3-none-any.whl.
File metadata
- Download URL: openedx_ltistore-1.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 19.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cafe2d6d68ebd58763b9ebf5058661f4af108d41bf7dff008761bc5b471aab10
|
|
| MD5 |
76c5c7bdca1f9b5381c2fa4c8270ce6d
|
|
| BLAKE2b-256 |
6492d4dc431200db663c1b33959c0dab09f665729bbb274d048b163ab7a87d94
|