Add Permission 'code' attribute

This commit is contained in:
Sanghyeok Lee 2017-02-09 17:27:32 +09:00
parent 176831e22b
commit b903f4ac98

View File

@ -161,13 +161,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):
""" """
@ -326,7 +326,9 @@ 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, message=getattr(permission, 'message', None) request,
message=getattr(permission, 'message', None),
code=getattr(permission, 'code', None)
) )
def check_object_permissions(self, request, obj): def check_object_permissions(self, request, obj):
@ -337,7 +339,9 @@ 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, message=getattr(permission, 'message', None) request,
message=getattr(permission, 'message', None),
code=getattr(permission, 'code', None)
) )
def check_throttles(self, request): def check_throttles(self, request):