Add check_view_permission method in schema generator instead of settings option

This commit is contained in:
Nik 2016-09-02 20:05:26 +03:00
parent 359fbef494
commit 0a3e911301
2 changed files with 9 additions and 9 deletions

View File

@ -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.

View File

@ -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',