Skip to content
Snippets Groups Projects
Unverified Commit 50f36603 authored by Robert Raposa's avatar Robert Raposa Committed by GitHub
Browse files

Merge pull request #18346 from edx/clee/trottle3

Change waffle flag for enrollment throttle to switch
parents 5fadf8cc 443aa797
No related branches found
No related tags found
No related merge requests found
"""
Enrollment API helpers and settings
"""
from openedx.core.djangoapps.waffle_utils import (WaffleFlag, WaffleFlagNamespace)
from openedx.core.djangoapps.waffle_utils import (WaffleSwitch, WaffleSwitchNamespace)
WAFFLE_FLAG_NAMESPACE = WaffleFlagNamespace(name='enrollment_api_rate_limit')
WAFFLE_SWITCH_NAMESPACE = WaffleSwitchNamespace(name='enrollment_api_rate_limit')
USE_RATE_LIMIT_400_FOR_STAFF_FOR_ENROLLMENT_API = WaffleFlag(WAFFLE_FLAG_NAMESPACE, 'staff_rate_limit_400')
USE_RATE_LIMIT_100_FOR_STAFF_FOR_ENROLLMENT_API = WaffleFlag(WAFFLE_FLAG_NAMESPACE, 'staff_rate_limit_100')
USE_RATE_LIMIT_40_FOR_ENROLLMENT_API = WaffleFlag(WAFFLE_FLAG_NAMESPACE, 'rate_limit_40')
USE_RATE_LIMIT_400_FOR_STAFF_FOR_ENROLLMENT_API = WaffleSwitch(WAFFLE_SWITCH_NAMESPACE, 'staff_rate_limit_400')
USE_RATE_LIMIT_100_FOR_STAFF_FOR_ENROLLMENT_API = WaffleSwitch(WAFFLE_SWITCH_NAMESPACE, 'staff_rate_limit_100')
USE_RATE_LIMIT_40_FOR_ENROLLMENT_API = WaffleSwitch(WAFFLE_SWITCH_NAMESPACE, 'rate_limit_40')
......@@ -87,28 +87,28 @@ class EnrollmentUserThrottle(UserRateThrottle, ApiKeyPermissionMixIn):
# service. These calls are no longer made and the plan is to set the
# rate limit back to its original state. LEARNER-5148
if USE_RATE_LIMIT_400_FOR_STAFF_FOR_ENROLLMENT_API.is_enabled():
THROTTLE_RATES = {
'user': '40/minute',
'staff': '400/minute',
}
elif USE_RATE_LIMIT_100_FOR_STAFF_FOR_ENROLLMENT_API.is_enabled():
THROTTLE_RATES = {
'user': '40/minute',
'staff': '100/minute',
}
elif USE_RATE_LIMIT_40_FOR_ENROLLMENT_API.is_enabled():
THROTTLE_RATES = {
'user': '40/minute',
'staff': '40/minute',
}
else:
THROTTLE_RATES = {
'user': '40/minute',
'staff': '2000/minute',
}
THROTTLE_RATES = {
'user': '40/minute',
'staff': '2000/minute',
}
def allow_request(self, request, view):
if USE_RATE_LIMIT_400_FOR_STAFF_FOR_ENROLLMENT_API.is_enabled():
self.THROTTLE_RATES = {
'user': '40/minute',
'staff': '400/minute',
}
elif USE_RATE_LIMIT_100_FOR_STAFF_FOR_ENROLLMENT_API.is_enabled():
self.THROTTLE_RATES = {
'user': '40/minute',
'staff': '100/minute',
}
elif USE_RATE_LIMIT_40_FOR_ENROLLMENT_API.is_enabled():
self.THROTTLE_RATES = {
'user': '40/minute',
'staff': '40/minute',
}
# Use a special scope for staff to allow for a separate throttle rate
user = request.user
if user.is_authenticated and (user.is_staff or user.is_superuser):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment