mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-10 07:14:48 +03:00
Add check_view_permission method in schema generator instead of settings option
This commit is contained in:
parent
359fbef494
commit
0a3e911301
|
@ -9,7 +9,6 @@ from django.utils.encoding import force_text
|
||||||
from rest_framework import exceptions, serializers
|
from rest_framework import exceptions, serializers
|
||||||
from rest_framework.compat import coreapi, uritemplate, urlparse
|
from rest_framework.compat import coreapi, uritemplate, urlparse
|
||||||
from rest_framework.request import clone_request
|
from rest_framework.request import clone_request
|
||||||
from rest_framework.settings import api_settings
|
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,11 +88,8 @@ class SchemaGenerator(object):
|
||||||
|
|
||||||
if request is not None:
|
if request is not None:
|
||||||
view.request = clone_request(request, method)
|
view.request = clone_request(request, method)
|
||||||
if api_settings.SCHEMA_CHECK_PERMISSIONS:
|
if not self.check_view_permission(view):
|
||||||
try:
|
continue
|
||||||
view.check_permissions(view.request)
|
|
||||||
except exceptions.APIException:
|
|
||||||
continue
|
|
||||||
else:
|
else:
|
||||||
view.request = None
|
view.request = None
|
||||||
|
|
||||||
|
@ -167,6 +163,13 @@ class SchemaGenerator(object):
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def check_view_permission(self, view):
|
||||||
|
try:
|
||||||
|
view.check_permissions(view.request)
|
||||||
|
except exceptions.APIException:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def get_allowed_methods(self, callback):
|
def get_allowed_methods(self, callback):
|
||||||
"""
|
"""
|
||||||
Return a list of the valid HTTP methods for this endpoint.
|
Return a list of the valid HTTP methods for this endpoint.
|
||||||
|
|
|
@ -84,9 +84,6 @@ DEFAULTS = {
|
||||||
'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
|
'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
|
||||||
'NON_FIELD_ERRORS_KEY': 'non_field_errors',
|
'NON_FIELD_ERRORS_KEY': 'non_field_errors',
|
||||||
|
|
||||||
# Schema generation
|
|
||||||
'SCHEMA_CHECK_PERMISSIONS': True,
|
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
'TEST_REQUEST_RENDERER_CLASSES': (
|
'TEST_REQUEST_RENDERER_CLASSES': (
|
||||||
'rest_framework.renderers.MultiPartRenderer',
|
'rest_framework.renderers.MultiPartRenderer',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user