diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 12db760f..7022dc50 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,6 +14,10 @@ Change Log Unreleased ~~~~~~~~~~ +[5.4.0] + +* Add support for the ``edx.course.enrollment.mode_changed`` event + [5.3.1] ~~~~~~~ diff --git a/docs/event-mapping/Supported_events.rst b/docs/event-mapping/Supported_events.rst index c640895c..49db27f5 100644 --- a/docs/event-mapping/Supported_events.rst +++ b/docs/event-mapping/Supported_events.rst @@ -9,6 +9,7 @@ Enrollment events * `edx.course.enrollment.activated`_ | edX `sample <../../event_routing_backends/processors/tests/fixtures/current/edx.course.enrollment.activated.json>`__ | xAPI `map <./xAPI_mapping.rst#edx-course-enrollment-activated>`__ , `sample <../../event_routing_backends/processors/xapi/tests/fixtures/expected/edx.course.enrollment.activated.json>`__ | Caliper `map <./Caliper_mapping.rst#edx-course-enrollment-activated>`__ , `sample <../../event_routing_backends/processors/caliper/tests/fixtures/expected/edx.course.enrollment.activated.json>`__ * `edx.course.enrollment.deactivated`_ | edX `sample <../../event_routing_backends/processors/tests/fixtures/current/edx.course.enrollment.deactivated.json>`__ | xAPI `map <./xAPI_mapping.rst#edx-course-enrollment-deactivated>`__ , `sample <../../event_routing_backends/processors/xapi/tests/fixtures/expected/edx.course.enrollment.deactivated.json>`__ | Caliper `map <./Caliper_mapping.rst#edx-course-enrollment-deactivated>`__ , `sample <../../event_routing_backends/processors/caliper/tests/fixtures/expected/edx.course.enrollment.deactivated.json>`__ +* `edx.course.enrollment.mode_changed`_ | edX `sample <../../event_routing_backends/processors/tests/fixtures/current/edx.course.enrollment.mode_changed.json>`__ | xAPI `map <./xAPI_mapping.rst#edxcourseenrollmentmode_changed>`__ , `sample <../../event_routing_backends/processors/xapi/tests/fixtures/expected/edx.course.enrollment.mode_changed.json>`__ Course grading events ----------------------- @@ -50,6 +51,7 @@ Course navigation events .. _edx.course.enrollment.activated: http://edx.readthedocs.io/projects/devdata/en/latest/internal_data_formats/tracking_logs/student_event_types.html#edx-course-enrollment-activated-and-edx-course-enrollment-deactivated .. _edx.course.enrollment.deactivated: http://edx.readthedocs.io/projects/devdata/en/latest/internal_data_formats/tracking_logs/student_event_types.html#edx-course-enrollment-activated-and-edx-course-enrollment-deactivated +.. _edx.course.enrollment.mode_changed: https://edx.readthedocs.io/projects/devdata/en/latest/internal_data_formats/tracking_logs/student_event_types.html#edx-course-enrollment-mode-changed .. _edx.grades.problem.submitted: http://edx.readthedocs.io/projects/devdata/en/latest/internal_data_formats/tracking_logs/course_team_event_types.html#edx-grades-problem-submitted .. _problem_check: http://edx.readthedocs.io/projects/devdata/en/latest/internal_data_formats/tracking_logs/student_event_types.html#problem-check .. _showanswer: http://edx.readthedocs.io/projects/devdata/en/latest/internal_data_formats/tracking_logs/student_event_types.html#showanswer diff --git a/docs/event-mapping/xAPI_mapping.rst b/docs/event-mapping/xAPI_mapping.rst index 556e0424..caa6b130 100644 --- a/docs/event-mapping/xAPI_mapping.rst +++ b/docs/event-mapping/xAPI_mapping.rst @@ -41,6 +41,27 @@ definition [ name ][ en-US ] =========================================================================== ========================================== +edx.course.enrollment.mode_changed +================================== + +=========================================================================== ========================================== +xAPI Key Value +=========================================================================== ========================================== +``Actor`` +objectType Agent +account [ homePage ] +account [ name ] +``Verb`` +id http://adlnet.gov/expapi/verbs/registered +display [ en-US ] registered +``Object`` +id /course/ +objectType Activity +definition [ type ] http://adlnet.gov/expapi/activities/course +definition [ name ][ en-US ] +definition [ extensions [ https://w3id.org/xapi/acrossx/extensions/type ] ] +=========================================================================== ========================================== + edx.course.grade.passed.first_time ================================== diff --git a/event_routing_backends/__init__.py b/event_routing_backends/__init__.py index 4e808d41..3b0c36e9 100644 --- a/event_routing_backends/__init__.py +++ b/event_routing_backends/__init__.py @@ -2,6 +2,6 @@ Various backends for receiving edX LMS events.. """ -__version__ = '5.3.1' +__version__ = '5.4.0' default_app_config = 'event_routing_backends.apps.EventRoutingBackendsConfig' # pylint: disable=invalid-name diff --git a/event_routing_backends/processors/tests/fixtures/current/edx.course.enrollment.mode_changed.json b/event_routing_backends/processors/tests/fixtures/current/edx.course.enrollment.mode_changed.json new file mode 100644 index 00000000..fa4faf91 --- /dev/null +++ b/event_routing_backends/processors/tests/fixtures/current/edx.course.enrollment.mode_changed.json @@ -0,0 +1,23 @@ +{ + "context": { + "accept_language": "en-US,en;q=0.9", + "agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36", + "client_id": null, + "course_id": "course-v1:edX+DemoX+Demo_Course", + "host": "localhost:18000", + "ip": "172.18.0.1", + "org_id": "edX", + "path": "/change_enrollment", + "referer": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/about", + "session": "44c2f6b53a6aaf210797a56391a443bc", + "user_id": 3, + "username": "edx" + }, + "data": { + "course_id": "course-v1:edX+DemoX+Demo_Course", + "mode": "audit", + "user_id": 3 + }, + "name": "edx.course.enrollment.mode_changed", + "timestamp": "2020-07-15T06:36:01.917775+00:00" +} diff --git a/event_routing_backends/processors/xapi/event_transformers/enrollment_events.py b/event_routing_backends/processors/xapi/event_transformers/enrollment_events.py index 8b4ebf01..09d1f28e 100644 --- a/event_routing_backends/processors/xapi/event_transformers/enrollment_events.py +++ b/event_routing_backends/processors/xapi/event_transformers/enrollment_events.py @@ -50,9 +50,10 @@ def get_object(self): @XApiTransformersRegistry.register('edx.course.enrollment.activated') +@XApiTransformersRegistry.register('edx.course.enrollment.mode_changed') class EnrollmentActivatedTransformer(BaseEnrollmentTransformer): """ - Transformers for event generated when learner enrolls in a course. + Transformers for event generated when learner enrolls or gets the enrollment mode changed in a course. """ verb = Verb( id=constants.XAPI_VERB_REGISTERED, diff --git a/event_routing_backends/processors/xapi/tests/fixtures/expected/edx.course.enrollment.mode_changed.json b/event_routing_backends/processors/xapi/tests/fixtures/expected/edx.course.enrollment.mode_changed.json new file mode 100644 index 00000000..15a14a0a --- /dev/null +++ b/event_routing_backends/processors/xapi/tests/fixtures/expected/edx.course.enrollment.mode_changed.json @@ -0,0 +1,34 @@ +{ + "id": "6d1f033b-3f70-458c-b53a-e6bb63cbaef9", + "actor": { + "objectType": "Agent", + "account": {"homePage": "http://localhost:18000", "name": "32e08e30-f8ae-4ce2-94a8-c2bfe38a70cb"} + }, + "context": { + "extensions": { + "https://w3id.org/xapi/openedx/extension/transformer-version": "event-routing-backends@1.1.1", + "https://w3id.org/xapi/openedx/extensions/session-id": "44c2f6b53a6aaf210797a56391a443bc" + } + }, + "object": { + "definition": { + "extensions": { + "https://w3id.org/xapi/acrossx/extensions/type": "audit" + }, + "name": { + "en": "Demonstration Course" + }, + "type": "http://adlnet.gov/expapi/activities/course" + }, + "id": "http://localhost:18000/course/course-v1:edX+DemoX+Demo_Course", + "objectType": "Activity" + }, + "timestamp": "2020-07-15T06:36:01.917775+00:00", + "verb": { + "display": { + "en": "registered" + }, + "id": "http://adlnet.gov/expapi/verbs/registered" + }, + "version": "1.0.3" +} diff --git a/event_routing_backends/settings/common.py b/event_routing_backends/settings/common.py index 3be8f012..626df276 100644 --- a/event_routing_backends/settings/common.py +++ b/event_routing_backends/settings/common.py @@ -61,12 +61,13 @@ def plugin_settings(settings): 'OPTIONS': { 'backend_name': 'xapi', 'processors': [ - { - 'ENGINE': 'eventtracking.processors.whitelist.NameWhitelistProcessor', - 'OPTIONS': { + { + 'ENGINE': 'eventtracking.processors.whitelist.NameWhitelistProcessor', + 'OPTIONS': { 'whitelist': [ 'edx.course.enrollment.activated', 'edx.course.enrollment.deactivated', + 'edx.course.enrollment.mode_changed', 'edx.ui.lms.link_clicked', 'edx.ui.lms.sequence.outline.selected', 'edx.ui.lms.outline.selected', @@ -101,8 +102,8 @@ def plugin_settings(settings): 'edx.video.language_menu.shown', 'edx.course.grade.passed.first_time' ] - } - }, + } + }, ], 'backends': { 'xapi': {