Skip to content

Commit

Permalink
refactor: [ACI-972] extract event bus event to another function (#2552)
Browse files Browse the repository at this point in the history
Co-authored-by: Andrii <[email protected]>
  • Loading branch information
andrii-hantkovskyi and Andrii authored May 7, 2024
1 parent 598d1b5 commit 0095376
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 87 deletions.
49 changes: 49 additions & 0 deletions lms/djangoapps/grades/event_utils.py
Original file line number Diff line number Diff line change
@@ -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,
),
)
)
88 changes: 3 additions & 85 deletions lms/djangoapps/grades/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,6 @@
from crum import get_current_user
from django.conf import settings
from eventtracking import tracker
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

from common.djangoapps.course_modes.models import CourseMode
from common.djangoapps.student.models import CourseEnrollment
Expand All @@ -25,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
Expand Down Expand Up @@ -199,44 +191,7 @@ def course_grade_now_passed(user, course_id):
}
)

# produce to event bus
if hasattr(course_id, 'ccx'):
CCX_COURSE_PASSING_STATUS_UPDATED.send_event(
course_passing_status=CcxCoursePassingStatusData(
status=CcxCoursePassingStatusData.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(
status=CoursePassingStatusData.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,
),
)
)
emit_course_passing_status_update(user, course_id, is_passing=True)


def course_grade_now_failed(user, course_id):
Expand All @@ -257,44 +212,7 @@ def course_grade_now_failed(user, course_id):
}
)

# produce to event bus
if hasattr(course_id, 'ccx'):
CCX_COURSE_PASSING_STATUS_UPDATED.send_event(
course_passing_status=CcxCoursePassingStatusData(
status=CcxCoursePassingStatusData.FAILING,
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(
status=CoursePassingStatusData.FAILING,
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,
),
)
)
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):
Expand Down
4 changes: 2 additions & 2 deletions lms/djangoapps/grades/tests/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def test_course_passing_status_updated_emitted(self):
"signal": COURSE_PASSING_STATUS_UPDATED,
"sender": None,
"course_passing_status": CoursePassingStatusData(
status=CoursePassingStatusData.PASSING,
is_passing=True,
user=UserData(
pii=UserPersonalData(
username=self.user.username,
Expand Down Expand Up @@ -217,7 +217,7 @@ def test_ccx_course_passing_status_updated_emitted(self):
"signal": CCX_COURSE_PASSING_STATUS_UPDATED,
"sender": None,
"course_passing_status": CcxCoursePassingStatusData(
status=CcxCoursePassingStatusData.PASSING,
is_passing=True,
user=UserData(
pii=UserPersonalData(
username=self.user.username,
Expand Down

0 comments on commit 0095376

Please sign in to comment.