diff --git a/rest_framework/schemas.py b/rest_framework/schemas.py index 2c5d3c5f0..903891f4b 100644 --- a/rest_framework/schemas.py +++ b/rest_framework/schemas.py @@ -9,7 +9,6 @@ from django.utils.encoding import force_text from rest_framework import exceptions, serializers from rest_framework.compat import coreapi, uritemplate, urlparse from rest_framework.request import clone_request -from rest_framework.settings import api_settings from rest_framework.views import APIView @@ -89,11 +88,8 @@ class SchemaGenerator(object): if request is not None: view.request = clone_request(request, method) - if api_settings.SCHEMA_CHECK_PERMISSIONS: - try: - view.check_permissions(view.request) - except exceptions.APIException: - continue + if not self.check_view_permission(view): + continue else: view.request = None @@ -167,6 +163,13 @@ class SchemaGenerator(object): 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): """ Return a list of the valid HTTP methods for this endpoint. diff --git a/rest_framework/settings.py b/rest_framework/settings.py index bb2f2b766..68c7709e8 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -84,9 +84,6 @@ DEFAULTS = { 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler', 'NON_FIELD_ERRORS_KEY': 'non_field_errors', - # Schema generation - 'SCHEMA_CHECK_PERMISSIONS': True, - # Testing 'TEST_REQUEST_RENDERER_CLASSES': ( 'rest_framework.renderers.MultiPartRenderer',