From 8253d41ccf9e5a0149ff0e296e2211c67366d082 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Tue, 28 Sep 2021 14:24:50 -0400 Subject: [PATCH] fix: drop segment call for streak discount It's being moved to the frontend, to better control when it's emitted (we want to only emit it if the voucher has not yet been claimed, which the frontend will ask ecommerce about). AA-1012 --- .../djangoapps/courseware_api/serializers.py | 1 + .../courseware_api/tests/test_views.py | 21 ++++++++----------- .../core/djangoapps/courseware_api/utils.py | 9 -------- .../core/djangoapps/courseware_api/views.py | 4 ++++ 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/openedx/core/djangoapps/courseware_api/serializers.py b/openedx/core/djangoapps/courseware_api/serializers.py index 78fe663e5b..b073f32bd0 100644 --- a/openedx/core/djangoapps/courseware_api/serializers.py +++ b/openedx/core/djangoapps/courseware_api/serializers.py @@ -119,6 +119,7 @@ class CourseInfoSerializer(serializers.Serializer): # pylint: disable=abstract- verification_status = serializers.CharField() linkedin_add_to_profile_url = serializers.URLField() user_needs_integrity_signature = serializers.BooleanField() + username = serializers.CharField() def __init__(self, *args, **kwargs): """ diff --git a/openedx/core/djangoapps/courseware_api/tests/test_views.py b/openedx/core/djangoapps/courseware_api/tests/test_views.py index 2c66336bce..176927bfcb 100644 --- a/openedx/core/djangoapps/courseware_api/tests/test_views.py +++ b/openedx/core/djangoapps/courseware_api/tests/test_views.py @@ -303,6 +303,7 @@ class CourseApiTestViews(BaseCoursewareTests, MasqueradeMixin): response = self.client.get(self.url) assert response.status_code == 200 + assert response.data['username'] == masquerade_role or username if expect_course_access: assert response.data['course_access']['has_access'] else: @@ -313,24 +314,20 @@ class CourseApiTestViews(BaseCoursewareTests, MasqueradeMixin): CourseEnrollment.enroll(self.user, self.course.id, 'audit') with override_waffle_flag(COURSEWARE_MFE_MILESTONES_STREAK_DISCOUNT, active=True): with mock.patch('common.djangoapps.student.models.UserCelebration.perform_streak_updates', return_value=3): - with mock.patch('common.djangoapps.track.segment.track') as mock_segment_track: - response = self.client.get(self.url, content_type='application/json') - celebrations = response.json()['celebrations'] - assert celebrations['streak_length_to_celebrate'] == 3 - assert celebrations['streak_discount_enabled'] is True - mock_segment_track.assert_called_once() + response = self.client.get(self.url, content_type='application/json') + celebrations = response.json()['celebrations'] + assert celebrations['streak_length_to_celebrate'] == 3 + assert celebrations['streak_discount_enabled'] is True def test_streak_segment_suppressed_for_unverified(self): """ Test that metadata endpoint does not return a discount and signal is not sent if flag is not set """ CourseEnrollment.enroll(self.user, self.course.id, 'audit') with override_waffle_flag(COURSEWARE_MFE_MILESTONES_STREAK_DISCOUNT, active=False): with mock.patch('common.djangoapps.student.models.UserCelebration.perform_streak_updates', return_value=3): - with mock.patch('common.djangoapps.track.segment.track') as mock_segment_track: - response = self.client.get(self.url, content_type='application/json') - celebrations = response.json()['celebrations'] - assert celebrations['streak_length_to_celebrate'] == 3 - assert celebrations['streak_discount_enabled'] is False - mock_segment_track.assert_not_called() + response = self.client.get(self.url, content_type='application/json') + celebrations = response.json()['celebrations'] + assert celebrations['streak_length_to_celebrate'] == 3 + assert celebrations['streak_discount_enabled'] is False @ddt.data( (None, False, False, False), diff --git a/openedx/core/djangoapps/courseware_api/utils.py b/openedx/core/djangoapps/courseware_api/utils.py index 5278421146..d2a1947973 100644 --- a/openedx/core/djangoapps/courseware_api/utils.py +++ b/openedx/core/djangoapps/courseware_api/utils.py @@ -9,7 +9,6 @@ from common.djangoapps.student.models import CourseEnrollmentCelebration, UserCe from lms.djangoapps.courseware.utils import can_show_verified_upgrade, verified_upgrade_deadline_link from openedx.features.course_duration_limits.access import get_user_course_expiration_date from openedx.features.discounts.applicability import can_show_streak_discount_coupon -from common.djangoapps.track import segment def get_celebrations_dict(user, enrollment, course, browser_timezone): @@ -43,14 +42,6 @@ def get_celebrations_dict(user, enrollment, course, browser_timezone): verified_mode = modes_dict.get('verified', None) if verified_mode: celebrations['streak_discount_enabled'] = True - segment.track( - user_id=user.id, - event_name='edx.bi.course.streak_discount_enabled', - properties={ - 'course_id': str(course_key), - 'sku': verified_mode.sku, - } - ) return celebrations diff --git a/openedx/core/djangoapps/courseware_api/views.py b/openedx/core/djangoapps/courseware_api/views.py index 2a708279b5..6ef71bb673 100644 --- a/openedx/core/djangoapps/courseware_api/views.py +++ b/openedx/core/djangoapps/courseware_api/views.py @@ -158,6 +158,10 @@ class CoursewareMeta: def license(self): return self.course.license + @property + def username(self): + return self.effective_user.username + @property def course_access(self) -> dict: """