{"id":18388355,"url":"https://github.com/ccnmtl/django-lti-provider-example","last_synced_at":"2025-04-07T02:33:23.439Z","repository":{"id":37929389,"uuid":"107690967","full_name":"ccnmtl/django-lti-provider-example","owner":"ccnmtl","description":"Example Django application using the django-lti-provider library","archived":false,"fork":false,"pushed_at":"2024-04-11T14:33:17.000Z","size":3198,"stargazers_count":6,"open_issues_count":3,"forks_count":10,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-04-12T16:18:28.334Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccnmtl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-10-20T14:53:49.000Z","updated_at":"2024-04-15T15:18:12.060Z","dependencies_parsed_at":"2022-07-14T06:10:37.492Z","dependency_job_id":"7d55f4f3-bd6c-400d-9bd8-ff683a491cac","html_url":"https://github.com/ccnmtl/django-lti-provider-example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnmtl%2Fdjango-lti-provider-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnmtl%2Fdjango-lti-provider-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnmtl%2Fdjango-lti-provider-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnmtl%2Fdjango-lti-provider-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccnmtl","download_url":"https://codeload.github.com/ccnmtl/django-lti-provider-example/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247583107,"owners_count":20961970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T01:33:54.652Z","updated_at":"2025-04-07T02:33:23.425Z","avatar_url":"https://github.com/ccnmtl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# django-lti-provider-example\n\n[![Actions Status](https://github.com/ccnmtl/django-lti-provider-example/workflows/build-and-test/badge.svg)](https://github.com/ccnmtl/django-lti-provider-example/actions)\n\nExample Django application using the [django-lti-provider](https://github.com/ccnmtl/django-lti-provider) library.\n\n## Configuration\n\n1. Clone\n\n    git clone https://github.com/ccnmtl/django-lti-provider-example.git\n    cd django-lti-provider\n\n2. Create the database\n\n   For Postgres:\n     * Create a database user/password (if needed)\n     * Create the database `createdb djangoltiproviderexample`\n\n3. Customize settings\n\n    * Create a local_settings.py file in the `djangoltiproviderexample` subdirectory OR\n    * Copy `djangoltiproviderexample/local_settings.py.example` to `djangoltiproviderexample/local_settings.py`\n    * Then, override the variables from `settings_shared.py` that you need to customize for your local installation.\n      * Specify ALLOWED_HOSTS = [ 'localhost', '.your.blackboard.or.moodle.domain', '.your.workstation.domain', ]\n    * The ``PYLTI_CONFIG`` variable in your ``local_settings.py`` configures the application consumers and secrets. Generate two long random numbers for these values.\n\n       ```\n       PYLTI_CONFIG = {\n           'consumers': {\n               '\u003crandom number string\u003e': {\n                   'secret': '\u003crandom number string\u003e'\n               }\n           }\n       }\n       ```\n4. Build the virtual environment\n\n   `make` will build the virtualenv\n\n5. Migrate the database\n\n   `./manage.py migrate`\n\n6. Run\n\n    `make runserver`\n\n## LMS Installation\n\nCanvas installation happens in two steps. First, as a Canvas\nadmin-level user, you must install the LTI tool's Developer Key. Then,\nas a Course admin, you install the LTI App within the course.\n\n### Developer Key installation\n\nIn Canvas, go to Settings -\u003e Developer Keys. Click \"+ Developer Key\",\nand choose LTI Key.\n\nFill out the following fields:\n\n* Key Name: django-lti-provider-example\n* Owner Email: your email\n* Method: Manual Entry\n* Title: (tool title)\n* Description: (short description)\n* Redirect URIs: `https://\u003cyour hostname\u003e/lti/launch/`\n* Target Link URI `https://\u003cyour hostname\u003e/lti/launch/`\n* OpenID Connect Initiation Url: `https://\u003cyour hostname\u003e/lti/login/`\n* JWK Method: Public JWK\n* Public JWK: (JSON contents of `/lti/jwks/` route)\n* LTI Advantage Services: ?\n* Placements: ?\n\nSelect LtiDeepLinkingRequest where possible, as this allows for deeper\nintegration.\n\n### LTI App installation\n\nIn Canvas, go to Settings -\u003e Apps. Click \"View App Configurations\". Click\n\"+ App\" to add a new App.\n\n* Configuration Type: By Client ID\n* Client ID: (Client ID from the Developer Keys Details column). This\n  will look something like: 43060000000000260\n* Click Install to install the app. Now you can click the gear icon to\n  see this app's Deployment Id, which will be added to the config.json.\n\nYou should now see your app present in the left-hand menu in Canvas's course\npage, if the right placement setting was selected when it was installed.\n\n### Third-party references\n\nMore info is here, which may be helpful:\n\n* https://community.canvaslms.com/docs/DOC-13117-415274482\n  * Note: the URL to enter in these steps will be `https://\u003capp hostname\u003e/lti/config.xml`\n* LTI 1.3 Canvas configuration docs:\n  https://github.com/dmitry-viskov/pylti1.3/wiki/Configure-Canvas-as-LTI-1.3-Platform\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccnmtl%2Fdjango-lti-provider-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccnmtl%2Fdjango-lti-provider-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccnmtl%2Fdjango-lti-provider-example/lists"}