Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
ce727fc7
Commit
ce727fc7
authored
Aug 04, 2014
by
Gabe Mulley
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4566 from mulby/remove-duplicate-context-fields
Remove duplicated data from legacy events
parents
e3ac967b
f7eb7df5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
86 additions
and
2 deletions
+86
-2
common/djangoapps/track/shim.py
+9
-1
common/djangoapps/track/tests/test_views.py
+68
-1
common/djangoapps/track/views.py
+9
-0
No files found.
common/djangoapps/track/shim.py
View file @
ce727fc7
...
...
@@ -18,9 +18,9 @@ class LegacyFieldMappingProcessor(object):
for
field
in
CONTEXT_FIELDS_TO_INCLUDE
:
if
field
in
context
:
event
[
field
]
=
context
[
field
]
del
context
[
field
]
else
:
event
[
field
]
=
''
remove_shim_context
(
event
)
if
'event_type'
in
event
.
get
(
'context'
,
{}):
event
[
'event_type'
]
=
event
[
'context'
][
'event_type'
]
...
...
@@ -40,3 +40,11 @@ class LegacyFieldMappingProcessor(object):
event
[
'event_source'
]
=
'server'
event
[
'page'
]
=
None
def
remove_shim_context
(
event
):
if
'context'
in
event
:
context
=
event
[
'context'
]
for
field
in
CONTEXT_FIELDS_TO_INCLUDE
:
if
field
in
context
:
del
context
[
field
]
common/djangoapps/track/tests/test_views.py
View file @
ce727fc7
# pylint: disable=missing-docstring,maybe-no-member
from
track
import
views
from
track.middleware
import
TrackMiddleware
from
mock
import
patch
,
sentinel
from
freezegun
import
freeze_time
...
...
@@ -53,12 +54,46 @@ class TestTrackViews(TestCase):
'context'
:
{
'course_id'
:
'foo/bar/baz'
,
'org_id'
:
'foo'
,
'session'
:
sentinel
.
session
,
},
}
self
.
mock_tracker
.
send
.
assert_called_once_with
(
expected_event
)
@freeze_time
(
expected_time
)
def
test_user_track_with_middleware
(
self
):
middleware
=
TrackMiddleware
()
request
=
self
.
request_factory
.
get
(
'/event'
,
{
'page'
:
self
.
url_with_course
,
'event_type'
:
sentinel
.
event_type
,
'event'
:
{}
})
middleware
.
process_request
(
request
)
try
:
views
.
user_track
(
request
)
expected_event
=
{
'username'
:
'anonymous'
,
'session'
:
''
,
'ip'
:
'127.0.0.1'
,
'event_source'
:
'browser'
,
'event_type'
:
str
(
sentinel
.
event_type
),
'event'
:
'{}'
,
'agent'
:
''
,
'page'
:
self
.
url_with_course
,
'time'
:
expected_time
,
'host'
:
'testserver'
,
'context'
:
{
'course_id'
:
'foo/bar/baz'
,
'org_id'
:
'foo'
,
'user_id'
:
''
,
'path'
:
u'/event'
},
}
finally
:
middleware
.
process_response
(
request
,
None
)
self
.
mock_tracker
.
send
.
assert_called_once_with
(
expected_event
)
@freeze_time
(
expected_time
)
def
test_server_track
(
self
):
request
=
self
.
request_factory
.
get
(
self
.
path_with_course
)
views
.
server_track
(
request
,
str
(
sentinel
.
event_type
),
'{}'
)
...
...
@@ -78,6 +113,38 @@ class TestTrackViews(TestCase):
self
.
mock_tracker
.
send
.
assert_called_once_with
(
expected_event
)
@freeze_time
(
expected_time
)
def
test_server_track_with_middleware
(
self
):
middleware
=
TrackMiddleware
()
request
=
self
.
request_factory
.
get
(
self
.
path_with_course
)
middleware
.
process_request
(
request
)
# The middleware emits an event, reset the mock to ignore it since we aren't testing that feature.
self
.
mock_tracker
.
reset_mock
()
try
:
views
.
server_track
(
request
,
str
(
sentinel
.
event_type
),
'{}'
)
expected_event
=
{
'username'
:
'anonymous'
,
'ip'
:
'127.0.0.1'
,
'event_source'
:
'server'
,
'event_type'
:
str
(
sentinel
.
event_type
),
'event'
:
'{}'
,
'agent'
:
''
,
'page'
:
None
,
'time'
:
expected_time
,
'host'
:
'testserver'
,
'context'
:
{
'user_id'
:
''
,
'course_id'
:
u'foo/bar/baz'
,
'org_id'
:
'foo'
,
'path'
:
u'/courses/foo/bar/baz/xmod/'
},
}
finally
:
middleware
.
process_response
(
request
,
None
)
self
.
mock_tracker
.
send
.
assert_called_once_with
(
expected_event
)
@freeze_time
(
expected_time
)
def
test_server_track_with_no_request
(
self
):
request
=
None
views
.
server_track
(
request
,
str
(
sentinel
.
event_type
),
'{}'
)
...
...
common/djangoapps/track/views.py
View file @
ce727fc7
...
...
@@ -12,6 +12,7 @@ from edxmako.shortcuts import render_to_response
from
track
import
tracker
from
track
import
contexts
from
track
import
shim
from
track.models
import
TrackingLog
from
eventtracking
import
tracker
as
eventtracker
...
...
@@ -59,6 +60,10 @@ def user_track(request):
"context"
:
context
,
}
# Some duplicated fields are passed into event-tracking via the context by track.middleware.
# Remove them from the event here since they are captured elsewhere.
shim
.
remove_shim_context
(
event
)
log_event
(
event
)
return
HttpResponse
(
'success'
)
...
...
@@ -92,6 +97,10 @@ def server_track(request, event_type, event, page=None):
"context"
:
eventtracker
.
get_tracker
()
.
resolve_context
(),
}
# Some duplicated fields are passed into event-tracking via the context by track.middleware.
# Remove them from the event here since they are captured elsewhere.
shim
.
remove_shim_context
(
event
)
log_event
(
event
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment