Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
edx-platform-release
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
1
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Hsin-Yu Chien
edx-platform-release
Commits
3f899676
Commit
3f899676
authored
11 years ago
by
Gabe Mulley
Browse files
Options
Downloads
Plain Diff
Merge pull request #1478 from mulby/gabe/track-user-id
add user_id to tracking context
parents
e587817c
86bb952f
Loading
Loading
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
AUTHORS
+1
-0
1 addition, 0 deletions
AUTHORS
common/djangoapps/track/middleware.py
+26
-9
26 additions, 9 deletions
common/djangoapps/track/middleware.py
common/djangoapps/track/tests/test_middleware.py
+21
-3
21 additions, 3 deletions
common/djangoapps/track/tests/test_middleware.py
with
48 additions
and
12 deletions
AUTHORS
+
1
−
0
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>
This diff is collapsed.
Click to expand it.
common/djangoapps/track/middleware.py
+
26
−
9
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
(
COURSE_
CONTEXT_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
course
context if it exists.
"""
"""
Exit the context if it exists.
"""
try
:
tracker
.
get_tracker
().
exit_context
(
COURSE_
CONTEXT_NAME
)
tracker
.
get_tracker
().
exit_context
(
CONTEXT_NAME
)
except
:
# pylint: disable=bare-except
pass
...
...
This diff is collapsed.
Click to expand it.
common/djangoapps/track/tests/test_middleware.py
+
21
−
3
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
}
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment