Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
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
course-discovery
Commits
9d71c524
Commit
9d71c524
authored
Apr 19, 2016
by
Peter Fogg
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #73 from edx/peter-fogg/anonymous-rate-limiting
Allow rate-limiting for anonymous users.
parents
fecf558a
0d19c5a7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
8 deletions
+13
-8
course_discovery/apps/core/tests/test_throttles.py
+5
-1
course_discovery/apps/core/throttles.py
+8
-7
No files found.
course_discovery/apps/core/tests/test_throttles.py
View file @
9d71c524
...
...
@@ -15,7 +15,7 @@ class RateLimitingTest(APITestCase):
def
setUp
(
self
):
super
(
RateLimitingTest
,
self
)
.
setUp
()
self
.
url
=
reverse
(
'
api:v1:catalog-list
'
)
self
.
url
=
reverse
(
'
django.swagger.resources.view
'
)
self
.
user
=
UserFactory
()
self
.
client
.
login
(
username
=
self
.
user
.
username
,
password
=
USER_PASSWORD
)
...
...
@@ -48,3 +48,7 @@ class RateLimitingTest(APITestCase):
self
.
user
.
save
()
response
=
self
.
_make_requests
()
self
.
assertEqual
(
response
.
status_code
,
200
)
def
test_anonymous_throttling
(
self
):
self
.
client
.
logout
()
self
.
test_rate_limiting
()
course_discovery/apps/core/throttles.py
View file @
9d71c524
...
...
@@ -11,11 +11,12 @@ class OverridableUserRateThrottle(UserRateThrottle):
user
=
request
.
user
if
user
.
is_superuser
:
return
True
try
:
# Override this throttle's rate if applicable
user_throttle
=
UserThrottleRate
.
objects
.
get
(
user
=
user
)
self
.
rate
=
user_throttle
.
rate
self
.
num_requests
,
self
.
duration
=
self
.
parse_rate
(
self
.
rate
)
except
UserThrottleRate
.
DoesNotExist
:
pass
if
not
user
.
is_anonymous
():
try
:
# Override this throttle's rate if applicable
user_throttle
=
UserThrottleRate
.
objects
.
get
(
user
=
user
)
self
.
rate
=
user_throttle
.
rate
self
.
num_requests
,
self
.
duration
=
self
.
parse_rate
(
self
.
rate
)
except
UserThrottleRate
.
DoesNotExist
:
pass
return
super
(
OverridableUserRateThrottle
,
self
)
.
allow_request
(
request
,
view
)
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