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
b1a76f12
Commit
b1a76f12
authored
Sep 13, 2013
by
Gabe Mulley
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #925 from mulby/fix/gabe/configurable-tracking-filter
Make URL patterns to exclude from tracking configurable
parents
e360f1d5
761a4dcc
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
78 additions
and
4 deletions
+78
-4
cms/envs/aws.py
+4
-0
cms/envs/common.py
+4
-0
common/djangoapps/track/middleware.py
+16
-4
common/djangoapps/track/tests/test_middleware.py
+46
-0
lms/envs/aws.py
+4
-0
lms/envs/common.py
+4
-0
No files found.
cms/envs/aws.py
View file @
b1a76f12
...
...
@@ -127,6 +127,10 @@ LOGGING = get_logger_config(LOG_DIR,
#theming start:
PLATFORM_NAME
=
ENV_TOKENS
.
get
(
'PLATFORM_NAME'
,
'edX'
)
# Event Tracking
if
"TRACKING_IGNORE_URL_PATTERNS"
in
ENV_TOKENS
:
TRACKING_IGNORE_URL_PATTERNS
=
ENV_TOKENS
.
get
(
"TRACKING_IGNORE_URL_PATTERNS"
)
################ SECURE AUTH ITEMS ###############################
# Secret things: passwords, access keys, etc.
...
...
cms/envs/common.py
View file @
b1a76f12
...
...
@@ -404,3 +404,7 @@ TRACKING_BACKENDS = {
}
}
}
# We're already logging events, and we don't want to capture user
# names/passwords. Heartbeat events are likely not interesting.
TRACKING_IGNORE_URL_PATTERNS
=
[
r'^/event'
,
r'^/login'
,
r'^/heartbeat'
]
common/djangoapps/track/middleware.py
View file @
b1a76f12
import
json
import
re
from
django.conf
import
settings
import
views
class
TrackMiddleware
:
class
TrackMiddleware
(
object
)
:
def
process_request
(
self
,
request
):
try
:
# We're already logging events, and we don't want to capture user
# names/passwords.
if
request
.
META
[
'PATH_INFO'
]
in
[
'/event'
,
'/login'
]:
if
not
self
.
_should_process_request
(
request
):
return
# Removes passwords from the tracking logs
...
...
@@ -45,3 +46,14 @@ class TrackMiddleware:
views
.
server_track
(
request
,
request
.
META
[
'PATH_INFO'
],
event
)
except
:
pass
def
_should_process_request
(
self
,
request
):
path
=
request
.
META
[
'PATH_INFO'
]
ignored_url_patterns
=
getattr
(
settings
,
'TRACKING_IGNORE_URL_PATTERNS'
,
[])
for
pattern
in
ignored_url_patterns
:
# Note we are explicitly relying on python's internal caching of
# compiled regular expressions here.
if
re
.
match
(
pattern
,
path
):
return
False
return
True
common/djangoapps/track/tests/test_middleware.py
0 → 100644
View file @
b1a76f12
import
re
from
mock
import
patch
from
django.test
import
TestCase
from
django.test.client
import
RequestFactory
from
django.test.utils
import
override_settings
from
track.middleware
import
TrackMiddleware
@patch
(
'track.views.server_track'
)
class
TrackMiddlewareTestCase
(
TestCase
):
def
setUp
(
self
):
self
.
track_middleware
=
TrackMiddleware
()
self
.
request_factory
=
RequestFactory
()
def
test_normal_request
(
self
,
mock_server_track
):
request
=
self
.
request_factory
.
get
(
'/somewhere'
)
self
.
track_middleware
.
process_request
(
request
)
self
.
assertTrue
(
mock_server_track
.
called
)
def
test_default_filters_do_not_render_view
(
self
,
mock_server_track
):
for
url
in
[
'/event'
,
'/event/1'
,
'/login'
,
'/heartbeat'
]:
request
=
self
.
request_factory
.
get
(
url
)
self
.
track_middleware
.
process_request
(
request
)
self
.
assertFalse
(
mock_server_track
.
called
)
mock_server_track
.
reset_mock
()
@override_settings
(
TRACKING_IGNORE_URL_PATTERNS
=
[])
def
test_reading_filtered_urls_from_settings
(
self
,
mock_server_track
):
request
=
self
.
request_factory
.
get
(
'/event'
)
self
.
track_middleware
.
process_request
(
request
)
self
.
assertTrue
(
mock_server_track
.
called
)
@override_settings
(
TRACKING_IGNORE_URL_PATTERNS
=
[
r'^/some/excluded.*'
])
def
test_anchoring_of_patterns_at_beginning
(
self
,
mock_server_track
):
request
=
self
.
request_factory
.
get
(
'/excluded'
)
self
.
track_middleware
.
process_request
(
request
)
self
.
assertTrue
(
mock_server_track
.
called
)
mock_server_track
.
reset_mock
()
request
=
self
.
request_factory
.
get
(
'/some/excluded/url'
)
self
.
track_middleware
.
process_request
(
request
)
self
.
assertFalse
(
mock_server_track
.
called
)
lms/envs/aws.py
View file @
b1a76f12
...
...
@@ -187,6 +187,10 @@ for name, value in ENV_TOKENS.get("CODE_JAIL", {}).items():
COURSES_WITH_UNSAFE_CODE
=
ENV_TOKENS
.
get
(
"COURSES_WITH_UNSAFE_CODE"
,
[])
# Event Tracking
if
"TRACKING_IGNORE_URL_PATTERNS"
in
ENV_TOKENS
:
TRACKING_IGNORE_URL_PATTERNS
=
ENV_TOKENS
.
get
(
"TRACKING_IGNORE_URL_PATTERNS"
)
############################## SECURE AUTH ITEMS ###############
# Secret things: passwords, access keys, etc.
...
...
lms/envs/common.py
View file @
b1a76f12
...
...
@@ -334,6 +334,10 @@ if MITX_FEATURES.get('ENABLE_SQL_TRACKING_LOGS'):
}
})
# We're already logging events, and we don't want to capture user
# names/passwords. Heartbeat events are likely not interesting.
TRACKING_IGNORE_URL_PATTERNS
=
[
r'^/event'
,
r'^/login'
,
r'^/heartbeat'
]
######################## subdomain specific settings ###########################
COURSE_LISTINGS
=
{}
SUBDOMAIN_BRANDING
=
{}
...
...
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