aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework
diff options
context:
space:
mode:
Diffstat (limited to 'djangorestframework')
-rw-r--r--djangorestframework/tests/throttling.py2
-rw-r--r--djangorestframework/throttling.py11
2 files changed, 7 insertions, 6 deletions
diff --git a/djangorestframework/tests/throttling.py b/djangorestframework/tests/throttling.py
index 9ee4ffa4..3033614f 100644
--- a/djangorestframework/tests/throttling.py
+++ b/djangorestframework/tests/throttling.py
@@ -14,10 +14,12 @@ from djangorestframework.response import Response
class User3SecRateThrottle(UserRateThrottle):
rate = '3/sec'
+ scope = 'seconds'
class User3MinRateThrottle(UserRateThrottle):
rate = '3/min'
+ scope = 'minutes'
class MockView(APIView):
diff --git a/djangorestframework/throttling.py b/djangorestframework/throttling.py
index f8b098d7..6249bd42 100644
--- a/djangorestframework/throttling.py
+++ b/djangorestframework/throttling.py
@@ -44,7 +44,7 @@ class SimpleRateThottle(BaseThrottle):
timer = time.time
settings = api_settings
- cache_format = '%(class)s_%(scope)s_%(ident)s'
+ cache_format = 'throtte_%(scope)s_%(ident)s'
scope = None
def __init__(self, view):
@@ -144,7 +144,6 @@ class AnonRateThrottle(SimpleRateThottle):
ident = request.META.get('REMOTE_ADDR', None)
return self.cache_format % {
- 'class': self.__class__.__name__,
'scope': self.scope,
'ident': ident
}
@@ -167,7 +166,6 @@ class UserRateThrottle(SimpleRateThottle):
ident = request.META.get('REMOTE_ADDR', None)
return self.cache_format % {
- 'class': self.__class__.__name__,
'scope': self.scope,
'ident': ident
}
@@ -181,11 +179,13 @@ class ScopedRateThrottle(SimpleRateThottle):
user id of the request, and the scope of the view being accessed.
"""
+ scope_attr = 'throttle_scope'
+
def __init__(self, view):
"""
Scope is determined from the view being accessed.
"""
- self.scope = getattr(self.view, 'throttle_scope', None)
+ self.scope = getattr(self.view, self.scope_attr, None)
super(ScopedRateThrottle, self).__init__(view)
def parse_rate_description(self, rate):
@@ -204,7 +204,7 @@ class ScopedRateThrottle(SimpleRateThottle):
with the '.throttle_scope` property of the view.
"""
if not self.scope:
- return None # Only throttle views with `.throttle_scope` set.
+ return None # Only throttle views if `.throttle_scope` is set.
if request.user.is_authenticated():
ident = request.user.id
@@ -212,7 +212,6 @@ class ScopedRateThrottle(SimpleRateThottle):
ident = request.META.get('REMOTE_ADDR', None)
return self.cache_format % {
- 'class': self.__class__.__name__,
'scope': self.scope,
'ident': ident
}