Skip to content

Commit 32e792d

Browse files
SaadYousafsaadyousafarbi
authored andcommitted
feat: add differentiation for tracking in-context and mfe events
1 parent 6d38d62 commit 32e792d

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

lms/djangoapps/discussion/django_comment_client/base/views.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def add_truncated_title_to_event_data(event_data, full_title):
112112
event_data['title'] = full_title[:TRACKING_MAX_FORUM_TITLE]
113113

114114

115-
def track_thread_created_event(request, course, thread, followed):
115+
def track_thread_created_event(request, course, thread, followed, from_mfe_sidebar=False):
116116
"""
117117
Send analytics event for a newly created thread.
118118
"""
@@ -124,6 +124,7 @@ def track_thread_created_event(request, course, thread, followed):
124124
'anonymous': thread.anonymous,
125125
'anonymous_to_peers': thread.anonymous_to_peers,
126126
'options': {'followed': followed},
127+
'from_mfe_sidebar': from_mfe_sidebar,
127128
# There is a stated desire for an 'origin' property that will state
128129
# whether this thread was created via courseware or the forum.
129130
# However, the view does not contain that data, and including it will
@@ -133,7 +134,7 @@ def track_thread_created_event(request, course, thread, followed):
133134
track_created_event(request, event_name, course, thread, event_data)
134135

135136

136-
def track_comment_created_event(request, course, comment, commentable_id, followed):
137+
def track_comment_created_event(request, course, comment, commentable_id, followed, from_mfe_sidebar=False):
137138
"""
138139
Send analytics event for a newly created response or comment.
139140
"""
@@ -143,6 +144,7 @@ def track_comment_created_event(request, course, comment, commentable_id, follow
143144
'discussion': {'id': comment.thread_id},
144145
'commentable_id': commentable_id,
145146
'options': {'followed': followed},
147+
'from_mfe_sidebar': from_mfe_sidebar,
146148
}
147149
parent_id = comment.get('parent_id')
148150
if parent_id:
@@ -179,13 +181,14 @@ def track_forum_search_event(request, course, search_event_data):
179181
tracker.emit(event_name, search_event_data)
180182

181183

182-
def track_thread_viewed_event(request, course, thread):
184+
def track_thread_viewed_event(request, course, thread, from_mfe_sidebar=False):
183185
"""
184186
Send analytics event for a viewed thread.
185187
"""
186188
event_name = _EVENT_NAME_TEMPLATE.format(obj_type='thread', action_name='viewed')
187189
event_data = {}
188190
event_data['commentable_id'] = thread.get('commentable_id', '')
191+
event_data['from_mfe_sidebar'] = from_mfe_sidebar
189192
if hasattr(thread, 'username'):
190193
event_data['target_username'] = thread.get('username', '')
191194
add_truncated_title_to_event_data(event_data, thread.get('title', ''))

lms/djangoapps/discussion/rest_api/api.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,6 +1191,7 @@ def get_comment_list(request, thread_id, endorsed, page, page_size, flagged=Fals
11911191
"""
11921192
response_skip = page_size * (page - 1)
11931193
reverse_order = request.GET.get('reverse_order', False)
1194+
from_mfe_sidebar = request.GET.get("enable_in_context_sidebar", False)
11941195
cc_thread, context = _get_thread_and_context(
11951196
request,
11961197
thread_id,
@@ -1237,7 +1238,7 @@ def get_comment_list(request, thread_id, endorsed, page, page_size, flagged=Fals
12371238
results = _serialize_discussion_entities(request, context, responses, requested_fields, DiscussionEntity.comment)
12381239

12391240
paginator = DiscussionAPIPagination(request, page, num_pages, resp_total)
1240-
track_thread_viewed_event(request, context["course"], cc_thread)
1241+
track_thread_viewed_event(request, context["course"], cc_thread, from_mfe_sidebar)
12411242
return paginator.get_paginated_response(results)
12421243

12431244

@@ -1421,6 +1422,7 @@ def create_thread(request, thread_data):
14211422
detail.
14221423
"""
14231424
course_id = thread_data.get("course_id")
1425+
from_mfe_sidebar = thread_data.pop("enable_in_context_sidebar", False)
14241426
user = request.user
14251427
if not course_id:
14261428
raise ValidationError({"course_id": ["This field is required."]})
@@ -1452,7 +1454,8 @@ def create_thread(request, thread_data):
14521454
api_thread = serializer.data
14531455
_do_extra_actions(api_thread, cc_thread, list(thread_data.keys()), actions_form, context, request)
14541456

1455-
track_thread_created_event(request, course, cc_thread, actions_form.cleaned_data["following"])
1457+
track_thread_created_event(request, course, cc_thread, actions_form.cleaned_data["following"],
1458+
from_mfe_sidebar)
14561459

14571460
return api_thread
14581461

@@ -1474,6 +1477,7 @@ def create_comment(request, comment_data):
14741477
detail.
14751478
"""
14761479
thread_id = comment_data.get("thread_id")
1480+
from_mfe_sidebar = comment_data.pop("enable_in_context_sidebar", False)
14771481
if not thread_id:
14781482
raise ValidationError({"thread_id": ["This field is required."]})
14791483
cc_thread, context = _get_thread_and_context(request, thread_id)
@@ -1497,7 +1501,8 @@ def create_comment(request, comment_data):
14971501
api_comment = serializer.data
14981502
_do_extra_actions(api_comment, cc_comment, list(comment_data.keys()), actions_form, context, request)
14991503

1500-
track_comment_created_event(request, course, cc_comment, cc_thread["commentable_id"], followed=False)
1504+
track_comment_created_event(request, course, cc_comment, cc_thread["commentable_id"], followed=False,
1505+
from_mfe_sidebar=from_mfe_sidebar)
15011506

15021507
return api_comment
15031508

lms/djangoapps/discussion/rest_api/tests/test_api.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1888,7 +1888,8 @@ def test_basic(self, mock_emit):
18881888
'body': 'Test body',
18891889
'url': '',
18901890
'user_forums_roles': [FORUM_ROLE_STUDENT],
1891-
'user_course_roles': []
1891+
'user_course_roles': [],
1892+
'from_mfe_sidebar': False,
18921893
}
18931894

18941895
def test_basic_in_blackout_period(self):
@@ -1975,6 +1976,7 @@ def test_basic_in_blackout_period_with_user_access(self, mock_emit):
19751976
"url": "",
19761977
"user_forums_roles": [FORUM_ROLE_STUDENT, FORUM_ROLE_MODERATOR],
19771978
"user_course_roles": [],
1979+
"from_mfe_sidebar": False,
19781980
}
19791981
)
19801982

@@ -2007,7 +2009,8 @@ def test_title_truncation(self, mock_emit):
20072009
'body': 'Test body',
20082010
'url': '',
20092011
'user_forums_roles': [FORUM_ROLE_STUDENT],
2010-
'user_course_roles': []
2012+
'user_course_roles': [],
2013+
'from_mfe_sidebar': False,
20112014
}
20122015

20132016
@ddt.data(
@@ -2257,6 +2260,7 @@ def test_success(self, parent_id, mock_emit):
22572260
"url": "",
22582261
"user_forums_roles": [FORUM_ROLE_STUDENT],
22592262
"user_course_roles": [],
2263+
"from_mfe_sidebar": False,
22602264
}
22612265
if parent_id:
22622266
expected_event_data["response"] = {"id": parent_id}
@@ -2353,6 +2357,7 @@ def test_success_in_black_out_with_user_access(self, parent_id, mock_emit):
23532357
"url": "",
23542358
"user_forums_roles": [FORUM_ROLE_STUDENT, FORUM_ROLE_MODERATOR],
23552359
"user_course_roles": [],
2360+
"from_mfe_sidebar": False,
23562361
}
23572362
if parent_id:
23582363
expected_event_data["response"] = {"id": parent_id}

0 commit comments

Comments
 (0)