2011-06-20 03:11:08 +04:00
|
|
|
from djangorestframework.views import View
|
2011-06-25 18:38:16 +04:00
|
|
|
from djangorestframework.permissions import PerUserThrottling, IsAuthenticated
|
2012-02-22 00:47:55 +04:00
|
|
|
from djangorestframework.reverse import reverse
|
2011-06-20 03:11:08 +04:00
|
|
|
|
2012-01-24 23:27:18 +04:00
|
|
|
|
2011-06-25 18:38:16 +04:00
|
|
|
class PermissionsExampleView(View):
|
|
|
|
"""
|
|
|
|
A container view for permissions examples.
|
|
|
|
"""
|
2011-12-29 17:31:12 +04:00
|
|
|
|
2011-06-25 18:38:16 +04:00
|
|
|
def get(self, request):
|
2012-01-24 23:27:18 +04:00
|
|
|
return [
|
|
|
|
{
|
|
|
|
'name': 'Throttling Example',
|
2012-03-01 00:32:10 +04:00
|
|
|
'url': reverse('throttled-resource', request=request)
|
2012-01-24 23:27:18 +04:00
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'Logged in example',
|
2012-03-01 00:32:10 +04:00
|
|
|
'url': reverse('loggedin-resource', request=request)
|
2012-01-24 23:27:18 +04:00
|
|
|
},
|
|
|
|
]
|
2011-12-29 17:31:12 +04:00
|
|
|
|
2011-06-20 03:11:08 +04:00
|
|
|
|
|
|
|
class ThrottlingExampleView(View):
|
|
|
|
"""
|
|
|
|
A basic read-only View that has a **per-user throttle** of 10 requests per minute.
|
2011-12-29 17:31:12 +04:00
|
|
|
|
2011-06-20 03:11:08 +04:00
|
|
|
If a user exceeds the 10 requests limit within a period of one minute, the
|
|
|
|
throttle will be applied until 60 seconds have passed since the first request.
|
|
|
|
"""
|
2011-12-29 17:31:12 +04:00
|
|
|
|
2012-01-24 23:27:18 +04:00
|
|
|
permissions = (PerUserThrottling,)
|
2011-06-20 03:11:08 +04:00
|
|
|
throttle = '10/min'
|
2011-12-29 17:31:12 +04:00
|
|
|
|
2011-06-20 03:11:08 +04:00
|
|
|
def get(self, request):
|
|
|
|
"""
|
|
|
|
Handle GET requests.
|
|
|
|
"""
|
2011-06-25 18:38:16 +04:00
|
|
|
return "Successful response to GET request because throttle is not yet active."
|
2011-12-29 17:31:12 +04:00
|
|
|
|
2012-01-24 23:27:18 +04:00
|
|
|
|
2011-06-26 03:38:56 +04:00
|
|
|
class LoggedInExampleView(View):
|
|
|
|
"""
|
2012-01-02 17:55:19 +04:00
|
|
|
You can login with **'test', 'test'.** or use curl:
|
2012-01-24 23:27:18 +04:00
|
|
|
|
2012-01-02 17:55:19 +04:00
|
|
|
`curl -X GET -H 'Accept: application/json' -u test:test http://localhost:8000/permissions-example`
|
2012-01-24 23:27:18 +04:00
|
|
|
"""
|
2012-01-02 17:55:19 +04:00
|
|
|
|
2011-06-25 18:38:16 +04:00
|
|
|
permissions = (IsAuthenticated, )
|
2012-01-24 23:27:18 +04:00
|
|
|
|
2011-06-25 18:38:16 +04:00
|
|
|
def get(self, request):
|
2012-01-24 23:27:18 +04:00
|
|
|
return 'You have permission to view this resource'
|