diff --git a/.idea/drf-yasg.iml b/.idea/drf-yasg.iml
index 3b4a1b5..8a16a11 100644
--- a/.idea/drf-yasg.iml
+++ b/.idea/drf-yasg.iml
@@ -17,6 +17,7 @@
+
diff --git a/docs/changelog.rst b/docs/changelog.rst
index 0e94aa3..e676708 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -9,7 +9,7 @@ Changelog
*Release date: Sep 13, 2018*
-- **ADDED:** added the ``DISPLAY_OPERATION_ID `` ``swagger-ui`` setting
+- **ADDED:** added the ``DISPLAY_OPERATION_ID`` ``swagger-ui`` setting
- **IMPROVED:** updated ``ReDoc`` to version 2.0.0-alpha.38
- **IMPROVED:** Operation summary will now be parsed from multi-line view method docstrings (:issue:`205`)
- **IMPROVED:** ``pattern`` will now work on any field with a ``RegexValidator``
diff --git a/src/drf_yasg/renderers.py b/src/drf_yasg/renderers.py
index b1edc6f..2932337 100644
--- a/src/drf_yasg/renderers.py
+++ b/src/drf_yasg/renderers.py
@@ -28,7 +28,7 @@ class _SpecRenderer(BaseRenderer):
if not isinstance(data, Swagger): # pragma: no cover
# if `swagger` is not a ``Swagger`` object, it means we somehow got a non-success ``Response``
- # in that case, it's probably better to let the default ``TemplateHTMLRenderer`` render it
+ # in that case, it's probably better to let the default ``JSONRenderer`` render it
# see https://github.com/axnsan12/drf-yasg/issues/58
return JSONRenderer().render(data, media_type, renderer_context)
return codec.encode(data)
@@ -68,15 +68,11 @@ class _UIRenderer(BaseRenderer):
# see https://github.com/axnsan12/drf-yasg/issues/58
return TemplateHTMLRenderer().render(swagger, accepted_media_type, renderer_context)
self.set_context(renderer_context, swagger)
- return render(
- renderer_context['request'],
- self.template,
- renderer_context
- )
+ return render(renderer_context['request'], self.template, renderer_context)
- def set_context(self, renderer_context, swagger):
- renderer_context['title'] = swagger.info.title
- renderer_context['version'] = swagger.info.version
+ def set_context(self, renderer_context, swagger=None):
+ renderer_context['title'] = swagger.info.title or '' if swagger else ''
+ renderer_context['version'] = swagger.info.version or '' if swagger else ''
renderer_context['oauth2_config'] = json.dumps(self.get_oauth2_config())
renderer_context['USE_SESSION_AUTH'] = swagger_settings.USE_SESSION_AUTH
renderer_context.update(self.get_auth_urls())
@@ -119,7 +115,7 @@ class SwaggerUIRenderer(_UIRenderer):
template = 'drf-yasg/swagger-ui.html'
format = 'swagger'
- def set_context(self, renderer_context, swagger):
+ def set_context(self, renderer_context, swagger=None):
super(SwaggerUIRenderer, self).set_context(renderer_context, swagger)
renderer_context['swagger_settings'] = json.dumps(self.get_swagger_ui_settings())
@@ -152,7 +148,7 @@ class ReDocRenderer(_UIRenderer):
template = 'drf-yasg/redoc.html'
format = 'redoc'
- def set_context(self, renderer_context, swagger):
+ def set_context(self, renderer_context, swagger=None):
super(ReDocRenderer, self).set_context(renderer_context, swagger)
renderer_context['redoc_settings'] = json.dumps(self.get_redoc_settings())
diff --git a/src/drf_yasg/utils.py b/src/drf_yasg/utils.py
index b14fce8..55cce59 100644
--- a/src/drf_yasg/utils.py
+++ b/src/drf_yasg/utils.py
@@ -273,7 +273,7 @@ def merge_params(parameters, overrides):
def filter_none(obj):
"""Remove ``None`` values from tuples, lists or dictionaries. Return other objects as-is.
- :param obj:
+ :param obj: the object
:return: collection with ``None`` values removed
"""
if obj is None:
diff --git a/src/drf_yasg/views.py b/src/drf_yasg/views.py
index bd1499e..20f8db0 100644
--- a/src/drf_yasg/views.py
+++ b/src/drf_yasg/views.py
@@ -12,7 +12,8 @@ from rest_framework.views import APIView
from .app_settings import swagger_settings
from .renderers import (
- OpenAPIRenderer, ReDocOldRenderer, ReDocRenderer, SwaggerJSONRenderer, SwaggerUIRenderer, SwaggerYAMLRenderer
+ OpenAPIRenderer, ReDocOldRenderer, ReDocRenderer, SwaggerJSONRenderer, SwaggerUIRenderer, SwaggerYAMLRenderer,
+ _SpecRenderer
)
SPEC_RENDERERS = (SwaggerYAMLRenderer, SwaggerJSONRenderer, OpenAPIRenderer)
@@ -85,7 +86,12 @@ def get_schema_view(info=None, url=None, patterns=None, urlconf=None, public=Fal
renderer_classes = _spec_renderers
def get(self, request, version='', format=None):
- generator = self.generator_class(info, request.version or version or '', url, patterns, urlconf)
+ version = request.version or version or ''
+ if isinstance(request.accepted_renderer, _SpecRenderer):
+ generator = self.generator_class(info, version, url, patterns, urlconf)
+ else:
+ generator = self.generator_class(info, version, url, patterns=[])
+
schema = generator.get_schema(request, self.public)
if schema is None:
raise exceptions.PermissionDenied() # pragma: no cover