mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-07 13:54:47 +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.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.
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Reference in New Issue
Block a user