Files
edx-platform/common/djangoapps/student/signals/signals.py
Zachary Hancock 2f2ed4d6cb feat: send course role events to the event bus (#34158)
Notify the event bus when a user's role in a course is added or removed
2024-02-13 13:16:23 -05:00

70 lines
1.9 KiB
Python

"""
Enrollment track related signals.
"""
from django.dispatch import Signal
from openedx_events.learning.data import CourseAccessRoleData, UserData, UserPersonalData
from openedx_events.learning.signals import COURSE_ACCESS_ROLE_ADDED, COURSE_ACCESS_ROLE_REMOVED
# The purely documentational providing_args argument for Signal is deprecated.
# So we are moving the args to a comment.
# providing_args=['user', 'course_key', 'mode', 'countdown']
ENROLLMENT_TRACK_UPDATED = Signal()
# providing_args=["course_enrollment", "skip_refund"]
UNENROLL_DONE = Signal()
# providing_args=["event", "user", "course_id", "mode", "cost", "currency"]
ENROLL_STATUS_CHANGE = Signal()
# providing_args=["course_enrollment"]
REFUND_ORDER = Signal()
USER_EMAIL_CHANGED = Signal()
def emit_course_access_role_added(user, course_id, org_key, role):
"""
Emit an event to the event-bus when a CourseAccessRole is added
"""
COURSE_ACCESS_ROLE_ADDED.send_event(
course_access_role_data=CourseAccessRoleData(
user=UserData(
pii=UserPersonalData(
username=user.username,
email=user.email,
),
id=user.id,
is_active=user.is_active,
),
course_key=course_id,
org_key=org_key,
role=role,
)
)
def emit_course_access_role_removed(user, course_id, org_key, role):
"""
Emit an event to the event-bus when a CourseAccessRole is deleted
"""
COURSE_ACCESS_ROLE_REMOVED.send_event(
course_access_role_data=CourseAccessRoleData(
user=UserData(
pii=UserPersonalData(
username=user.username,
email=user.email,
),
id=user.id,
is_active=user.is_active,
),
course_key=course_id,
org_key=org_key,
role=role,
)
)