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
7e31c95c
Commit
7e31c95c
authored
Jan 03, 2014
by
Brian Wilson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Modify server_track to handle being called without a request.
parent
dd591a4c
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
21 deletions
+41
-21
common/djangoapps/track/tests/test_views.py
+18
-0
common/djangoapps/track/views.py
+23
-21
No files found.
common/djangoapps/track/tests/test_views.py
View file @
7e31c95c
...
@@ -78,6 +78,24 @@ class TestTrackViews(TestCase):
...
@@ -78,6 +78,24 @@ class TestTrackViews(TestCase):
}
}
self
.
mock_tracker
.
send
.
assert_called_once_with
(
expected_event
)
self
.
mock_tracker
.
send
.
assert_called_once_with
(
expected_event
)
def
test_server_track_with_no_request
(
self
):
request
=
None
views
.
server_track
(
request
,
str
(
sentinel
.
event_type
),
'{}'
)
expected_event
=
{
'username'
:
'anonymous'
,
'ip'
:
''
,
'event_source'
:
'server'
,
'event_type'
:
str
(
sentinel
.
event_type
),
'event'
:
'{}'
,
'agent'
:
''
,
'page'
:
None
,
'time'
:
self
.
_expected_timestamp
,
'host'
:
''
,
'context'
:
{},
}
self
.
mock_tracker
.
send
.
assert_called_once_with
(
expected_event
)
def
test_task_track
(
self
):
def
test_task_track
(
self
):
request_info
=
{
request_info
=
{
'username'
:
'anonymous'
,
'username'
:
'anonymous'
,
...
...
common/djangoapps/track/views.py
View file @
7e31c95c
import
datetime
import
datetime
import
pytz
from
pytz
import
UTC
from
pytz
import
UTC
from
django.contrib.auth.decorators
import
login_required
from
django.contrib.auth.decorators
import
login_required
...
@@ -22,6 +21,14 @@ def log_event(event):
...
@@ -22,6 +21,14 @@ def log_event(event):
tracker
.
send
(
event
)
tracker
.
send
(
event
)
def
_get_request_header
(
request
,
header_name
,
default
=
''
):
"""Helper method to get header values from a request's META dict, if present."""
if
request
is
not
None
and
hasattr
(
request
,
'META'
)
and
header_name
in
request
.
META
:
return
request
.
META
[
header_name
]
else
:
return
default
def
user_track
(
request
):
def
user_track
(
request
):
"""
"""
Log when POST call to "event" URL is made by a user. Uses request.REQUEST
Log when POST call to "event" URL is made by a user. Uses request.REQUEST
...
@@ -40,25 +47,20 @@ def user_track(request):
...
@@ -40,25 +47,20 @@ def user_track(request):
except
:
except
:
scookie
=
""
scookie
=
""
try
:
agent
=
request
.
META
[
'HTTP_USER_AGENT'
]
except
:
agent
=
''
page
=
request
.
REQUEST
[
'page'
]
page
=
request
.
REQUEST
[
'page'
]
with
eventtracker
.
get_tracker
()
.
context
(
'edx.course.browser'
,
contexts
.
course_context_from_url
(
page
)):
with
eventtracker
.
get_tracker
()
.
context
(
'edx.course.browser'
,
contexts
.
course_context_from_url
(
page
)):
event
=
{
event
=
{
"username"
:
username
,
"username"
:
username
,
"session"
:
scookie
,
"session"
:
scookie
,
"ip"
:
request
.
META
[
'REMOTE_ADDR'
]
,
"ip"
:
_get_request_header
(
request
,
'REMOTE_ADDR'
)
,
"event_source"
:
"browser"
,
"event_source"
:
"browser"
,
"event_type"
:
request
.
REQUEST
[
'event_type'
],
"event_type"
:
request
.
REQUEST
[
'event_type'
],
"event"
:
request
.
REQUEST
[
'event'
],
"event"
:
request
.
REQUEST
[
'event'
],
"agent"
:
agent
,
"agent"
:
_get_request_header
(
request
,
'HTTP_USER_AGENT'
)
,
"page"
:
page
,
"page"
:
page
,
"time"
:
datetime
.
datetime
.
now
(
UTC
),
"time"
:
datetime
.
datetime
.
now
(
UTC
),
"host"
:
request
.
META
[
'SERVER_NAME'
]
,
"host"
:
_get_request_header
(
request
,
'SERVER_NAME'
)
,
"context"
:
eventtracker
.
get_tracker
()
.
resolve_context
(),
"context"
:
eventtracker
.
get_tracker
()
.
resolve_context
(),
}
}
...
@@ -68,33 +70,33 @@ def user_track(request):
...
@@ -68,33 +70,33 @@ def user_track(request):
def
server_track
(
request
,
event_type
,
event
,
page
=
None
):
def
server_track
(
request
,
event_type
,
event
,
page
=
None
):
"""Log events related to server requests."""
"""
Log events related to server requests.
Handle the situation where the request may be NULL, as may happen with management commands.
"""
if
event_type
.
startswith
(
"/event_logs"
)
and
request
.
user
.
is_staff
:
return
# don't log
try
:
try
:
username
=
request
.
user
.
username
username
=
request
.
user
.
username
except
:
except
:
username
=
"anonymous"
username
=
"anonymous"
try
:
# define output:
agent
=
request
.
META
[
'HTTP_USER_AGENT'
]
except
:
agent
=
''
event
=
{
event
=
{
"username"
:
username
,
"username"
:
username
,
"ip"
:
request
.
META
[
'REMOTE_ADDR'
]
,
"ip"
:
_get_request_header
(
request
,
'REMOTE_ADDR'
)
,
"event_source"
:
"server"
,
"event_source"
:
"server"
,
"event_type"
:
event_type
,
"event_type"
:
event_type
,
"event"
:
event
,
"event"
:
event
,
"agent"
:
agent
,
"agent"
:
_get_request_header
(
request
,
'HTTP_USER_AGENT'
)
,
"page"
:
page
,
"page"
:
page
,
"time"
:
datetime
.
datetime
.
now
(
UTC
),
"time"
:
datetime
.
datetime
.
now
(
UTC
),
"host"
:
request
.
META
[
'SERVER_NAME'
]
,
"host"
:
_get_request_header
(
request
,
'SERVER_NAME'
)
,
"context"
:
eventtracker
.
get_tracker
()
.
resolve_context
(),
"context"
:
eventtracker
.
get_tracker
()
.
resolve_context
(),
}
}
if
event_type
.
startswith
(
"/event_logs"
)
and
request
.
user
.
is_staff
:
return
# don't log
log_event
(
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