From e73db48967f4af4c33f6802e44421b0b2be8a8d3 Mon Sep 17 00:00:00 2001 From: alexjmpb Date: Tue, 21 May 2024 10:22:33 -0500 Subject: [PATCH] feat: adding new course passing events --- lms/djangoapps/grades/event_utils.py | 49 ++++++++++++++++++++++++++++ lms/djangoapps/grades/events.py | 5 +++ 2 files changed, 54 insertions(+) create mode 100644 lms/djangoapps/grades/event_utils.py diff --git a/lms/djangoapps/grades/event_utils.py b/lms/djangoapps/grades/event_utils.py new file mode 100644 index 000000000000..8e4df28c846b --- /dev/null +++ b/lms/djangoapps/grades/event_utils.py @@ -0,0 +1,49 @@ +from openedx_events.learning.data import ( + CcxCourseData, + CcxCoursePassingStatusData, + CourseData, + CoursePassingStatusData, + UserData, + UserPersonalData +) +from openedx_events.learning.signals import CCX_COURSE_PASSING_STATUS_UPDATED, COURSE_PASSING_STATUS_UPDATED + + +def emit_course_passing_status_update(user, course_id, is_passing): + if hasattr(course_id, 'ccx'): + CCX_COURSE_PASSING_STATUS_UPDATED.send_event( + course_passing_status=CcxCoursePassingStatusData( + is_passing=is_passing, + user=UserData( + pii=UserPersonalData( + username=user.username, + email=user.email, + name=user.get_full_name(), + ), + id=user.id, + is_active=user.is_active, + ), + course=CcxCourseData( + ccx_course_key=course_id, + master_course_key=course_id.to_course_locator(), + ), + ) + ) + else: + COURSE_PASSING_STATUS_UPDATED.send_event( + course_passing_status=CoursePassingStatusData( + is_passing=is_passing, + user=UserData( + pii=UserPersonalData( + username=user.username, + email=user.email, + name=user.get_full_name(), + ), + id=user.id, + is_active=user.is_active, + ), + course=CourseData( + course_key=course_id, + ), + ) + ) diff --git a/lms/djangoapps/grades/events.py b/lms/djangoapps/grades/events.py index 90279a3e69fe..aada530cb7d6 100644 --- a/lms/djangoapps/grades/events.py +++ b/lms/djangoapps/grades/events.py @@ -16,6 +16,7 @@ get_event_transaction_type, set_event_transaction_type ) +from lms.djangoapps.grades.event_utils import emit_course_passing_status_update from lms.djangoapps.grades.signals.signals import SCHEDULE_FOLLOW_UP_SEGMENT_EVENT_FOR_COURSE_PASSED_FIRST_TIME from openedx.core.djangoapps.content.course_overviews.models import CourseOverview from openedx.features.enterprise_support.context import get_enterprise_event_context @@ -190,6 +191,8 @@ def course_grade_now_passed(user, course_id): } ) + emit_course_passing_status_update(user, course_id, is_passing=True) + def course_grade_now_failed(user, course_id): """ @@ -209,6 +212,8 @@ def course_grade_now_failed(user, course_id): } ) + emit_course_passing_status_update(user, course_id, is_passing=False) + def fire_segment_event_on_course_grade_passed_first_time(user_id, course_locator): """