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
3f899676
Commit
3f899676
authored
Oct 29, 2013
by
Gabe Mulley
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1478 from mulby/gabe/track-user-id
add user_id to tracking context
parents
e587817c
86bb952f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
48 additions
and
12 deletions
+48
-12
AUTHORS
+1
-0
common/djangoapps/track/middleware.py
+26
-9
common/djangoapps/track/tests/test_middleware.py
+21
-3
No files found.
AUTHORS
View file @
3f899676
...
...
@@ -92,4 +92,5 @@ Felipe Montoya <felipe.montoya@edunext.co>
Julia Hansbrough <julia@edx.org>
Pavel Yushchenko <pavelyushchenko@gmail.com>
Nicolas Chevalier <nicolas.chevalier@epitech.eu>
Gabe Mulley <gabe@edx.org>
Iain Dunning <idunning@mit.edu>
common/djangoapps/track/middleware.py
View file @
3f899676
import
json
import
re
import
logging
from
django.conf
import
settings
...
...
@@ -8,13 +9,20 @@ from track import contexts
from
eventtracking
import
tracker
COURSE_CONTEXT_NAME
=
'edx.course'
log
=
logging
.
getLogger
(
__name__
)
CONTEXT_NAME
=
'edx.request'
class
TrackMiddleware
(
object
):
"""
Tracks all requests made, as well as setting up context for other server
emitted events.
"""
def
process_request
(
self
,
request
):
try
:
self
.
enter_
course
_context
(
request
)
self
.
enter_
request
_context
(
request
)
if
not
self
.
should_process_request
(
request
):
return
...
...
@@ -66,20 +74,29 @@ class TrackMiddleware(object):
return
False
return
True
def
enter_
course
_context
(
self
,
request
):
def
enter_
request
_context
(
self
,
request
):
"""
Extract
course information from the request and add it to the
tracking
context.
Extract
information from the request and add it to the tracking
context.
"""
context
=
{}
context
.
update
(
contexts
.
course_context_from_url
(
request
.
build_absolute_uri
()))
try
:
context
[
'user_id'
]
=
request
.
user
.
pk
except
AttributeError
:
context
[
'user_id'
]
=
''
if
settings
.
DEBUG
:
log
.
error
(
'Cannot determine primary key of logged in user.'
)
tracker
.
get_tracker
()
.
enter_context
(
CO
URSE_CO
NTEXT_NAME
,
context
s
.
course_context_from_url
(
request
.
build_absolute_uri
())
CONTEXT_NAME
,
context
)
def
process_response
(
self
,
request
,
response
):
# pylint: disable=unused-argument
"""Exit the co
urse co
ntext if it exists."""
"""Exit the context if it exists."""
try
:
tracker
.
get_tracker
()
.
exit_context
(
CO
URSE_CO
NTEXT_NAME
)
tracker
.
get_tracker
()
.
exit_context
(
CONTEXT_NAME
)
except
:
# pylint: disable=bare-except
pass
...
...
common/djangoapps/track/tests/test_middleware.py
View file @
3f899676
...
...
@@ -2,6 +2,7 @@ import re
from
mock
import
patch
from
django.contrib.auth.models
import
User
from
django.test
import
TestCase
from
django.test.client
import
RequestFactory
from
django.test.utils
import
override_settings
...
...
@@ -52,15 +53,32 @@ class TrackMiddlewareTestCase(TestCase):
def
test_request_in_course_context
(
self
):
request
=
self
.
request_factory
.
get
(
'/courses/test_org/test_course/test_run/foo'
)
self
.
track_middleware
.
process_request
(
request
)
captured_context
=
tracker
.
get_tracker
()
.
resolve_context
()
self
.
track_middleware
.
process_response
(
request
,
None
)
self
.
assertEquals
(
tracker
.
get_tracker
()
.
resolve_context
()
,
captured_context
,
{
'course_id'
:
'test_org/test_course/test_run'
,
'org_id'
:
'test_org'
'org_id'
:
'test_org'
,
'user_id'
:
''
}
)
self
.
track_middleware
.
process_response
(
request
,
None
)
self
.
assertEquals
(
tracker
.
get_tracker
()
.
resolve_context
(),
{}
)
def
test_request_with_user
(
self
):
request
=
self
.
request_factory
.
get
(
'/courses/'
)
request
.
user
=
User
(
pk
=
1
)
self
.
track_middleware
.
process_request
(
request
)
self
.
addCleanup
(
self
.
track_middleware
.
process_response
,
request
,
None
)
self
.
assertEquals
(
tracker
.
get_tracker
()
.
resolve_context
(),
{
'course_id'
:
''
,
'org_id'
:
''
,
'user_id'
:
1
}
)
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