Commit a7042ca3 by Fred Smith

Merge pull request #6319 from edx/hotfix/analytics-mobile-shim

Update segment.io shim for mobile event syntax change.
parents dbc6166f ad7a67da
...@@ -157,6 +157,15 @@ def track_segmentio_event(request): # pylint: disable=too-many-statements ...@@ -157,6 +157,15 @@ def track_segmentio_event(request): # pylint: disable=too-many-statements
): ):
raise EventValidationError(WARNING_IGNORED_TYPE) raise EventValidationError(WARNING_IGNORED_TYPE)
# create and populate application field if it doesn't exist
app_context = segment_properties.get('context', {})
if 'application' not in app_context:
context['application'] = {
'name': app_context.get('app_name', ''),
'version': '' if not segment_context else segment_context.get('app', {}).get('version', '')
}
app_context.pop('app_name', None)
if segment_context: if segment_context:
# copy the entire segment's context dict as a sub-field of our custom context dict # copy the entire segment's context dict as a sub-field of our custom context dict
context['client'] = dict(segment_context) context['client'] = dict(segment_context)
...@@ -168,7 +177,7 @@ def track_segmentio_event(request): # pylint: disable=too-many-statements ...@@ -168,7 +177,7 @@ def track_segmentio_event(request): # pylint: disable=too-many-statements
del context['client'][field] del context['client'][field]
# Overlay any context provided in the properties # Overlay any context provided in the properties
context.update(segment_properties.get('context', {})) context.update(app_context)
user_id = full_segment_event.get('userId') user_id = full_segment_event.get('userId')
if not user_id: if not user_id:
......
...@@ -122,6 +122,7 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase): ...@@ -122,6 +122,7 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase):
'data': kwargs.get('data', {}), 'data': kwargs.get('data', {}),
'context': { 'context': {
'course_id': kwargs.get('course_id') or '', 'course_id': kwargs.get('course_id') or '',
'app_name': 'edx.mobile.android',
} }
}, },
"channel": 'server', "channel": 'server',
...@@ -130,6 +131,9 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase): ...@@ -130,6 +131,9 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase):
"name": kwargs.get('library_name', 'test-app'), "name": kwargs.get('library_name', 'test-app'),
"version": "unknown" "version": "unknown"
}, },
"app": {
"version": "1.0.1",
},
'userAgent': str(sentinel.user_agent), 'userAgent': str(sentinel.user_agent),
}, },
"receivedAt": "2014-08-27T16:33:39.100Z", "receivedAt": "2014-08-27T16:33:39.100Z",
...@@ -197,6 +201,10 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase): ...@@ -197,6 +201,10 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase):
'time': datetime.strptime("2014-08-27T16:33:39.215Z", "%Y-%m-%dT%H:%M:%S.%fZ"), 'time': datetime.strptime("2014-08-27T16:33:39.215Z", "%Y-%m-%dT%H:%M:%S.%fZ"),
'host': 'testserver', 'host': 'testserver',
'context': { 'context': {
'application': {
'name': 'edx.mobile.android',
'version': '1.0.1',
},
'user_id': USER_ID, 'user_id': USER_ID,
'course_id': course_id, 'course_id': course_id,
'org_id': 'foo', 'org_id': 'foo',
...@@ -205,7 +213,10 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase): ...@@ -205,7 +213,10 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase):
'library': { 'library': {
'name': 'test-app', 'name': 'test-app',
'version': 'unknown' 'version': 'unknown'
} },
'app': {
'version': '1.0.1',
},
}, },
'received_at': datetime.strptime("2014-08-27T16:33:39.100Z", "%Y-%m-%dT%H:%M:%S.%fZ"), 'received_at': datetime.strptime("2014-08-27T16:33:39.100Z", "%Y-%m-%dT%H:%M:%S.%fZ"),
}, },
...@@ -361,6 +372,9 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase): ...@@ -361,6 +372,9 @@ class SegmentIOTrackingTestCase(EventTrackingTestCase):
'name': 'test-app', 'name': 'test-app',
'version': 'unknown' 'version': 'unknown'
}, },
'app': {
'version': '1.0.1',
},
}, },
'application': { 'application': {
'name': 'edx.mobileapp.android', 'name': 'edx.mobileapp.android',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment