From 1f76ccaeeeac6c74dabb683f3dc0ebcb458a0b1e Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 15 Jun 2016 17:00:26 +0100 Subject: [PATCH] Fail gracefully if coreapi is not installed and SchemaGenerator is used --- rest_framework/routers.py | 2 -- rest_framework/schemas.py | 5 +++-- schema-support | 0 3 files changed, 3 insertions(+), 4 deletions(-) create mode 100644 schema-support diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 3bd1fc850..4a0ed6f50 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -23,7 +23,6 @@ from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import NoReverseMatch from rest_framework import exceptions, renderers, views -from rest_framework.compat import coreapi from rest_framework.response import Response from rest_framework.reverse import reverse from rest_framework.schemas import SchemaGenerator @@ -288,7 +287,6 @@ class DefaultRouter(SimpleRouter): view_renderers = list(api_settings.DEFAULT_RENDERER_CLASSES) if schema_urls and self.schema_title: - assert coreapi, '`coreapi` must be installed for schema support.' view_renderers += [renderers.CoreJSONRenderer] schema_generator = SchemaGenerator(patterns=schema_urls) diff --git a/rest_framework/schemas.py b/rest_framework/schemas.py index c47ff3eb7..fc9c7baba 100644 --- a/rest_framework/schemas.py +++ b/rest_framework/schemas.py @@ -1,13 +1,12 @@ from importlib import import_module -import coreapi -import uritemplate from django.conf import settings from django.contrib.admindocs.views import simplify_regex from django.core.urlresolvers import RegexURLPattern, RegexURLResolver from django.utils import six from rest_framework import exceptions +from rest_framework.compat import coreapi, uritemplate from rest_framework.request import clone_request from rest_framework.views import APIView @@ -22,6 +21,8 @@ class SchemaGenerator(object): } 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 isinstance(urlconf, six.string_types): urls = import_module(urlconf) diff --git a/schema-support b/schema-support new file mode 100644 index 000000000..e69de29bb