diff --git a/src/drf_yasg/renderers.py b/src/drf_yasg/renderers.py index a1a7b61..276e4a5 100644 --- a/src/drf_yasg/renderers.py +++ b/src/drf_yasg/renderers.py @@ -123,7 +123,7 @@ class SwaggerUIRenderer(_UIRenderer): super(SwaggerUIRenderer, self).set_context(renderer_context, swagger) swagger_ui_settings = self.get_swagger_ui_settings() - request = renderer_context['request'] + request = renderer_context.get('request', None) oauth_redirect_url = force_text(swagger_ui_settings.get('oauth2RedirectUrl', '')) if request and oauth_redirect_url: swagger_ui_settings['oauth2RedirectUrl'] = request.build_absolute_uri(oauth_redirect_url) diff --git a/testproj/testproj/urls.py b/testproj/testproj/urls.py index b8707fb..09e8211 100644 --- a/testproj/testproj/urls.py +++ b/testproj/testproj/urls.py @@ -47,6 +47,12 @@ def root_redirect(request): return redirect(schema_view, permanent=True) +# urlpatterns required for settings values +required_urlpatterns = [ + url(r'^admin/', admin.site.urls), + url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), +] + urlpatterns = [ url(r'^swagger(?P.json|.yaml)$', SchemaView.without_ui(cache_timeout=0), name='schema-json'), url(r'^swagger/$', SchemaView.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), @@ -59,13 +65,10 @@ urlpatterns = [ url(r'^$', root_redirect), - url(r'^admin/', admin.site.urls), - url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), - url(r'^snippets/', include('snippets.urls')), url(r'^articles/', include('articles.urls')), url(r'^users/', include('users.urls')), url(r'^todo/', include('todo.urls')), url(r'^people/', include('people.urls')), url(r'^plain/', plain_view), -] +] + required_urlpatterns diff --git a/tests/urlconfs/login_test_urls.py b/tests/urlconfs/login_test_urls.py index 831af1d..67617f6 100644 --- a/tests/urlconfs/login_test_urls.py +++ b/tests/urlconfs/login_test_urls.py @@ -1,11 +1,13 @@ from django.conf.urls import url +from testproj.urls import required_urlpatterns + def dummy(request): pass -urlpatterns = [ +urlpatterns = required_urlpatterns + [ url(r'^test/login$', dummy, name='login'), url(r'^test/logout$', dummy, name='logout'), ] diff --git a/tests/urlconfs/ns_version1.py b/tests/urlconfs/ns_version1.py index 8d22a56..15c1d18 100644 --- a/tests/urlconfs/ns_version1.py +++ b/tests/urlconfs/ns_version1.py @@ -3,6 +3,7 @@ from rest_framework import generics, versioning from snippets.models import Snippet from snippets.serializers import SnippetSerializer +from testproj.urls import required_urlpatterns class SnippetList(generics.ListCreateAPIView): @@ -21,6 +22,6 @@ class SnippetList(generics.ListCreateAPIView): app_name = 'test_ns_versioning' -urlpatterns = [ +urlpatterns = required_urlpatterns + [ url(r"^$", SnippetList.as_view()) ] diff --git a/tests/urlconfs/ns_version2.py b/tests/urlconfs/ns_version2.py index ea184a5..53fa0a1 100644 --- a/tests/urlconfs/ns_version2.py +++ b/tests/urlconfs/ns_version2.py @@ -2,6 +2,7 @@ from django.conf.urls import url from rest_framework import fields from snippets.serializers import SnippetSerializer +from testproj.urls import required_urlpatterns from .ns_version1 import SnippetList as SnippetListV1 @@ -19,6 +20,6 @@ class SnippetListV2(SnippetListV1): app_name = '2.0' -urlpatterns = [ +urlpatterns = required_urlpatterns + [ url(r"^$", SnippetListV2.as_view()) ] diff --git a/tests/urlconfs/ns_versioning.py b/tests/urlconfs/ns_versioning.py index 346f485..0a1faba 100644 --- a/tests/urlconfs/ns_versioning.py +++ b/tests/urlconfs/ns_versioning.py @@ -1,7 +1,7 @@ from django.conf.urls import include, url from rest_framework import versioning -from testproj.urls import SchemaView +from testproj.urls import SchemaView, required_urlpatterns from . import ns_version1, ns_version2 @@ -17,7 +17,7 @@ schema_patterns = [ ] -urlpatterns = [ +urlpatterns = required_urlpatterns + [ url(VERSION_PREFIX_NS + r"v1.0/snippets/", include(ns_version1, namespace='1.0')), url(VERSION_PREFIX_NS + r"v2.0/snippets/", include(ns_version2)), url(VERSION_PREFIX_NS + r'v1.0/', include((schema_patterns, '1.0'))), diff --git a/tests/urlconfs/url_versioning.py b/tests/urlconfs/url_versioning.py index 7c09e59..f76d912 100644 --- a/tests/urlconfs/url_versioning.py +++ b/tests/urlconfs/url_versioning.py @@ -3,7 +3,7 @@ from rest_framework import fields, generics, versioning from snippets.models import Snippet from snippets.serializers import SnippetSerializer -from testproj.urls import SchemaView +from testproj.urls import SchemaView, required_urlpatterns class SnippetSerializerV2(SnippetSerializer): @@ -42,7 +42,7 @@ class VersionedSchemaView(SchemaView): versioning_class = versioning.URLPathVersioning -urlpatterns = [ +urlpatterns = required_urlpatterns + [ url(VERSION_PREFIX_URL + r"snippets/$", SnippetList.as_view()), url(VERSION_PREFIX_URL + r'swagger(?P.json|.yaml)$', VersionedSchemaView.without_ui(), name='vschema-json'), ]