mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-28 17:09:59 +03:00
Add code property to Permission
This commit is contained in:
parent
e7eff73ad5
commit
d7a151a71f
|
@ -101,10 +101,8 @@ class APIException(Exception):
|
||||||
default_code = 'error'
|
default_code = 'error'
|
||||||
|
|
||||||
def __init__(self, detail=None, code=None):
|
def __init__(self, detail=None, code=None):
|
||||||
if detail is None:
|
detail = detail or self.default_detail
|
||||||
detail = self.default_detail
|
code = code or self.default_code
|
||||||
if code is None:
|
|
||||||
code = self.default_code
|
|
||||||
|
|
||||||
self.detail = _get_error_details(detail, code)
|
self.detail = _get_error_details(detail, code)
|
||||||
|
|
||||||
|
@ -141,10 +139,8 @@ class ValidationError(APIException):
|
||||||
default_code = 'invalid'
|
default_code = 'invalid'
|
||||||
|
|
||||||
def __init__(self, detail=None, code=None):
|
def __init__(self, detail=None, code=None):
|
||||||
if detail is None:
|
detail = detail or self.default_detail
|
||||||
detail = self.default_detail
|
code = code or self.default_code
|
||||||
if code is None:
|
|
||||||
code = self.default_code
|
|
||||||
|
|
||||||
# For validation failures, we may collect many errors together,
|
# For validation failures, we may collect many errors together,
|
||||||
# so the details should always be coerced to a list if not already.
|
# so the details should always be coerced to a list if not already.
|
||||||
|
|
|
@ -102,6 +102,8 @@ class BasePermission(metaclass=BasePermissionMetaclass):
|
||||||
"""
|
"""
|
||||||
A base class from which all permission classes should inherit.
|
A base class from which all permission classes should inherit.
|
||||||
"""
|
"""
|
||||||
|
message = None
|
||||||
|
code = None
|
||||||
|
|
||||||
def has_permission(self, request, view):
|
def has_permission(self, request, view):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -166,13 +166,13 @@ class APIView(View):
|
||||||
"""
|
"""
|
||||||
raise exceptions.MethodNotAllowed(request.method)
|
raise exceptions.MethodNotAllowed(request.method)
|
||||||
|
|
||||||
def permission_denied(self, request, message=None):
|
def permission_denied(self, request, message=None, code=None):
|
||||||
"""
|
"""
|
||||||
If request is not permitted, determine what kind of exception to raise.
|
If request is not permitted, determine what kind of exception to raise.
|
||||||
"""
|
"""
|
||||||
if request.authenticators and not request.successful_authenticator:
|
if request.authenticators and not request.successful_authenticator:
|
||||||
raise exceptions.NotAuthenticated()
|
raise exceptions.NotAuthenticated()
|
||||||
raise exceptions.PermissionDenied(detail=message)
|
raise exceptions.PermissionDenied(detail=message, code=code)
|
||||||
|
|
||||||
def throttled(self, request, wait):
|
def throttled(self, request, wait):
|
||||||
"""
|
"""
|
||||||
|
@ -330,9 +330,7 @@ class APIView(View):
|
||||||
"""
|
"""
|
||||||
for permission in self.get_permissions():
|
for permission in self.get_permissions():
|
||||||
if not permission.has_permission(request, self):
|
if not permission.has_permission(request, self):
|
||||||
self.permission_denied(
|
self.permission_denied(request, permission.message, permission.code)
|
||||||
request, message=getattr(permission, 'message', None)
|
|
||||||
)
|
|
||||||
|
|
||||||
def check_object_permissions(self, request, obj):
|
def check_object_permissions(self, request, obj):
|
||||||
"""
|
"""
|
||||||
|
@ -341,9 +339,7 @@ class APIView(View):
|
||||||
"""
|
"""
|
||||||
for permission in self.get_permissions():
|
for permission in self.get_permissions():
|
||||||
if not permission.has_object_permission(request, self, obj):
|
if not permission.has_object_permission(request, self, obj):
|
||||||
self.permission_denied(
|
self.permission_denied(request, permission.message, permission.code)
|
||||||
request, message=getattr(permission, 'message', None)
|
|
||||||
)
|
|
||||||
|
|
||||||
def check_throttles(self, request):
|
def check_throttles(self, request):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user