OL Open edX Events Handler
A generic Open edX plugin for handling Open edX signals and events for MIT Open Learning.
Purpose
This plugin serves as the centralized handler for all Open edX signals and events that MIT OL systems need to react to. Rather than creating a separate plugin for each event, all signal handlers and filters are collected here.
Currently handled events:
org.openedx.learning.user.course_access_role.added.v1 — When a course access role (e.g. instructor, staff) is added, notifies an external system via webhook so the user can be enrolled as an auditor in the corresponding course.
org.openedx.learning.course.enrollment.created.v1 — When a user is enrolled in a course (for example, when a course team manually enrolls a batch of learners from the instructor dashboard), notifies an external system via webhook so the enrollment can be mirrored there. Enrollments that the external system created itself through the Open edX enrollment REST API are skipped, see ENROLLMENT_WEBHOOK_SERVICE_WORKER_USERNAME below.
openedx.core.djangoapps.signals.signals.COURSE_GRADE_NOW_PASSED — When a learner earns a passing grade, notifies an external system to create a certificate.
Installation
For detailed installation instructions, please refer to the plugin installation guide.
Installation required in:
LMS
Studio (CMS)
Configuration
edx-platform configuration
Add the following configuration values to the config file in Open edX. For any release after Juniper, that config file is /edx/etc/lms.yml and /edx/etc/cms.yml. If you’re using private.py, add these values to lms/envs/private.py and cms/envs/private.py. These should be added to the top level.
ENROLLMENT_WEBHOOK_URL: "https://example.com/api/openedx_webhook/enrollment/" ENROLLMENT_WEBHOOK_ACCESS_TOKEN: "<your-oauth-access-token>" CERTIFICATE_WEBHOOK_URL: "https://example.com/api/openedx_webhook/certificate/" CERTIFICATE_WEBHOOK_ACCESS_TOKEN: "<your-oauth-access-token>"Optionally, override the roles that trigger the webhook (defaults to ["instructor", "staff"]):
ENROLLMENT_COURSE_ACCESS_ROLES: ["instructor", "staff"]Set the username of the service worker that the external system uses to create enrollments through the Open edX enrollment REST API. Enrollments created by this user are not sent back to it:
ENROLLMENT_WEBHOOK_SERVICE_WORKER_USERNAME: "<service-worker-username>"This must be the username of the Django user that owns the OAuth2 token the external system authenticates with, because that is the user Open edX resolves the request to. Do not copy the external system’s own service-worker-username setting (for example MITx Online’s OPENEDX_SERVICE_WORKER_USERNAME): nothing keeps the two in sync, and if they disagree the filter never matches and every enrollment the external system creates is sent straight back to it. Resolve the owner from the token itself:
from oauth2_provider.models import AccessToken AccessToken.objects.get(token="<the external system's API token>").user.usernameWhen the setting is unset, or when the acting user cannot be determined (an enrollment made from a Celery task or a management command), the webhook is dispatched anyway. The receiving endpoint is idempotent, so a redundant call is harmless, while dropping a real enrollment is not.
For Tutor installations, these values can also be managed through a custom Tutor plugin.
Metadata
Release files for ol-openedx-events-handler 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ol_openedx_events_handler-0.3.0.tar.gz | 13.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ol_openedx_events_handler-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.5 kB
Release files / ol_openedx_events_handler-0.3.0.tar.gz
| Download URL | ol_openedx_events_handler-0.3.0.tar.gz |
|---|---|
| Size | 13.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6cda9f39b6dc406ec4059a2df1176be0c1edaccf9d6abe353ee5ee883bd3825
|
|
BLAKE2b-256 checksum How to use checksums |
ceb70256639b9056c688685cd27f8d25f83a32d48e4d61d0938a9e3c4a534e2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / ol_openedx_events_handler-0.3.0-py3-none-any.whl
| Download URL | ol_openedx_events_handler-0.3.0-py3-none-any.whl |
|---|---|
| Size | 15.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
21723d99cf2f085f57f22788656e2dcb17bd7ce915a78c52fa20513458376036
|
|
BLAKE2b-256 checksum How to use checksums |
bae20b8cb80a0a0a50ef1b0c953530d2503f94fca7dd49f25fdce3e2b25f16c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Security for ol-openedx-events-handler 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.