Provide more context to calls to Segment.
Implementation for DE-1089. Centralize the definition of context into a single method. This is in common/djangoapps/track because the context is originally set there by middleware.
This commit is contained in:
@@ -102,8 +102,9 @@ class FieldOverrideProvider(object):
|
||||
"""
|
||||
__metaclass__ = ABCMeta
|
||||
|
||||
def __init__(self, user):
|
||||
def __init__(self, user, fallback_field_data):
|
||||
self.user = user
|
||||
self.fallback_field_data = fallback_field_data
|
||||
|
||||
@abstractmethod
|
||||
def get(self, block, name, default): # pragma no cover
|
||||
@@ -196,7 +197,7 @@ class OverrideFieldData(FieldData):
|
||||
|
||||
def __init__(self, user, fallback, providers):
|
||||
self.fallback = fallback
|
||||
self.providers = tuple(provider(user) for provider in providers)
|
||||
self.providers = tuple(provider(user, fallback) for provider in providers)
|
||||
|
||||
def get_override(self, block, name):
|
||||
"""
|
||||
|
||||
@@ -2191,9 +2191,9 @@ class GenerateUserCertTests(ModuleStoreTestCase):
|
||||
def test_user_with_passing_grade(self, mock_is_course_passed):
|
||||
# If user has above passing grading then json will return cert generating message and
|
||||
# status valid code
|
||||
# mocking xqueue and analytics
|
||||
# mocking xqueue and Segment analytics
|
||||
|
||||
analytics_patcher = patch('courseware.views.views.analytics')
|
||||
analytics_patcher = patch('courseware.views.views.segment')
|
||||
mock_tracker = analytics_patcher.start()
|
||||
self.addCleanup(analytics_patcher.stop)
|
||||
|
||||
@@ -2211,11 +2211,6 @@ class GenerateUserCertTests(ModuleStoreTestCase):
|
||||
'category': 'certificates',
|
||||
'label': unicode(self.course.id)
|
||||
},
|
||||
|
||||
context={
|
||||
'ip': '127.0.0.1',
|
||||
'Google Analytics': {'clientId': None}
|
||||
}
|
||||
)
|
||||
mock_tracker.reset_mock()
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@ import urllib
|
||||
from collections import OrderedDict, namedtuple
|
||||
from datetime import datetime
|
||||
|
||||
import analytics
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.models import AnonymousUser, User
|
||||
@@ -98,6 +97,7 @@ from openedx.features.enterprise_support.api import data_sharing_consent_require
|
||||
from openedx.features.journals.api import get_journals_context
|
||||
from shoppingcart.utils import is_shopping_cart_enabled
|
||||
from student.models import CourseEnrollment, UserTestGroup
|
||||
from track import segment
|
||||
from util.cache import cache, cache_if_anonymous
|
||||
from util.db import outer_atomic
|
||||
from util.milestones_helpers import get_prerequisite_courses_display
|
||||
@@ -1429,24 +1429,11 @@ def _track_successful_certificate_generation(user_id, course_id):
|
||||
None
|
||||
|
||||
"""
|
||||
if settings.LMS_SEGMENT_KEY:
|
||||
event_name = 'edx.bi.user.certificate.generate'
|
||||
tracking_context = tracker.get_tracker().resolve_context()
|
||||
|
||||
analytics.track(
|
||||
user_id,
|
||||
event_name,
|
||||
{
|
||||
'category': 'certificates',
|
||||
'label': text_type(course_id)
|
||||
},
|
||||
context={
|
||||
'ip': tracking_context.get('ip'),
|
||||
'Google Analytics': {
|
||||
'clientId': tracking_context.get('client_id')
|
||||
}
|
||||
}
|
||||
)
|
||||
event_name = 'edx.bi.user.certificate.generate'
|
||||
segment.track(user_id, event_name, {
|
||||
'category': 'certificates',
|
||||
'label': text_type(course_id)
|
||||
})
|
||||
|
||||
|
||||
@require_http_methods(["GET", "POST"])
|
||||
|
||||
Reference in New Issue
Block a user