From faf33bf32e4c3542459361f5cc2322f399d9f5a1 Mon Sep 17 00:00:00 2001 From: Zainab Amir Date: Tue, 23 Aug 2022 15:33:54 +0500 Subject: [PATCH] feat: add optimizely experiment (#30880) Added two events to measure optimizely experiment metrics: - user_goal_setting_click - user_start_course_click VAN-1052 --- common/djangoapps/track/views/__init__.py | 8 ++++++++ lms/djangoapps/course_home_api/outline/views.py | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/common/djangoapps/track/views/__init__.py b/common/djangoapps/track/views/__init__.py index 9021183224..65800a6f51 100644 --- a/common/djangoapps/track/views/__init__.py +++ b/common/djangoapps/track/views/__init__.py @@ -9,6 +9,7 @@ from eventtracking import tracker as eventtracker from ipware.ip import get_client_ip from common.djangoapps.track import contexts, shim, tracker +from lms.djangoapps.utils import OptimizelyClient def _get_request_header(request, header_name, default=''): @@ -97,6 +98,13 @@ def user_track(request): with eventtracker.get_tracker().context('edx.course.browser', context_override): eventtracker.emit(name=name, data=data) + # TODO: VAN-1052: This event is added to track the KPIs for A/B experiment. + # Remove it after the experiment has been paused. + if name == 'edx.course.home.resume_course.clicked' and request.user: + optimizely_client = OptimizelyClient.get_optimizely_client() + if optimizely_client: + optimizely_client.track('user_start_course_click', str(request.user.id)) + return HttpResponse('success') diff --git a/lms/djangoapps/course_home_api/outline/views.py b/lms/djangoapps/course_home_api/outline/views.py index 6f059ee598..dc8b0fe31d 100644 --- a/lms/djangoapps/course_home_api/outline/views.py +++ b/lms/djangoapps/course_home_api/outline/views.py @@ -35,6 +35,7 @@ from lms.djangoapps.courseware.date_summary import TodaysDate from lms.djangoapps.courseware.masquerade import is_masquerading, setup_masquerade from lms.djangoapps.courseware.views.views import get_cert_data from lms.djangoapps.grades.course_grade_factory import CourseGradeFactory +from lms.djangoapps.utils import OptimizelyClient from openedx.core.djangoapps.content.learning_sequences.api import get_user_course_outline from openedx.core.djangoapps.content.course_overviews.api import get_course_overview_or_404 from openedx.core.lib.api.authentication import BearerAuthenticationAllowInactiveUser @@ -390,6 +391,11 @@ def save_course_goal(request): # pylint: disable=missing-function-docstring try: add_course_goal(request.user, course_id, subscribed_to_reminders, days_per_week) + # TODO: VAN-1052: This event is added to track the KPIs for A/B experiment. + # Remove it after the experiment has been paused. + optimizely_client = OptimizelyClient.get_optimizely_client() + if optimizely_client and request.user: + optimizely_client.track('user_goal_setting_click', str(request.user.id)) return Response({ 'header': _('Your course goal has been successfully set.'), 'message': _('Course goal updated successfully.'),