Fail gracefully if coreapi is not installed and SchemaGenerator is used

This commit is contained in:
Tom Christie 2016-06-15 17:00:26 +01:00
parent 482289695d
commit 1f76ccaeee
3 changed files with 3 additions and 4 deletions

View File

@ -23,7 +23,6 @@ from django.core.exceptions import ImproperlyConfigured
from django.core.urlresolvers import NoReverseMatch from django.core.urlresolvers import NoReverseMatch
from rest_framework import exceptions, renderers, views from rest_framework import exceptions, renderers, views
from rest_framework.compat import coreapi
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from rest_framework.schemas import SchemaGenerator from rest_framework.schemas import SchemaGenerator
@ -288,7 +287,6 @@ class DefaultRouter(SimpleRouter):
view_renderers = list(api_settings.DEFAULT_RENDERER_CLASSES) view_renderers = list(api_settings.DEFAULT_RENDERER_CLASSES)
if schema_urls and self.schema_title: if schema_urls and self.schema_title:
assert coreapi, '`coreapi` must be installed for schema support.'
view_renderers += [renderers.CoreJSONRenderer] view_renderers += [renderers.CoreJSONRenderer]
schema_generator = SchemaGenerator(patterns=schema_urls) schema_generator = SchemaGenerator(patterns=schema_urls)

View File

@ -1,13 +1,12 @@
from importlib import import_module from importlib import import_module
import coreapi
import uritemplate
from django.conf import settings from django.conf import settings
from django.contrib.admindocs.views import simplify_regex from django.contrib.admindocs.views import simplify_regex
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver from django.core.urlresolvers import RegexURLPattern, RegexURLResolver
from django.utils import six from django.utils import six
from rest_framework import exceptions from rest_framework import exceptions
from rest_framework.compat import coreapi, uritemplate
from rest_framework.request import clone_request from rest_framework.request import clone_request
from rest_framework.views import APIView from rest_framework.views import APIView
@ -22,6 +21,8 @@ class SchemaGenerator(object):
} }
def __init__(self, schema_title=None, patterns=None, urlconf=None): def __init__(self, schema_title=None, patterns=None, urlconf=None):
assert coreapi, '`coreapi` must be installed for schema support.'
if patterns is None and urlconf is not None: if patterns is None and urlconf is not None:
if isinstance(urlconf, six.string_types): if isinstance(urlconf, six.string_types):
urls = import_module(urlconf) urls = import_module(urlconf)

0
schema-support Normal file
View File