From f494c6f2d475bfc936b78fda7ce11ed4d46c7224 Mon Sep 17 00:00:00 2001 From: Shu Muto Date: Wed, 14 Mar 2018 11:43:12 +0900 Subject: [PATCH] Fix Angular errors in openstack_auth Angular errors on login page are caused by loading ngdetails view. Although registration of URL for ngdetails is executed on top level of Horizon, ngdetails view is not needed to be loaded in login page, i.e. openstack_auth side. To fix this issue, this patch moves registration of URL for ngdetails into openstack_dashboard side. Change-Id: Ib039417b4e666c2341f17ac05fd7723bc758816c Closes-Bug: #1754133 Closes-Bug: #1753557 --- horizon/base.py | 7 ------- horizon/test/unit/test_base.py | 6 ------ openstack_dashboard/test/unit/test_views.py | 6 ++++++ openstack_dashboard/test/urls.py | 4 ++++ openstack_dashboard/urls.py | 9 +++++++++ 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/horizon/base.py b/horizon/base.py index 4ed7d19ca8..2fe3bffc76 100644 --- a/horizon/base.py +++ b/horizon/base.py @@ -882,13 +882,6 @@ class Site(Registry, HorizonComponent): urlpatterns.append(url(r'^%s/' % dash.slug, _wrapped_include(dash._decorated_urls))) - # add URL for ngdetails - views = import_module('horizon.browsers.views') - urlpatterns.append(url(r'^ngdetails/', - views.AngularDetailsView.as_view(), - name='ngdetails')) - _decorate_urlconf(urlpatterns, require_auth) - # Return the three arguments to django.conf.urls.include return urlpatterns, self.namespace, self.slug diff --git a/horizon/test/unit/test_base.py b/horizon/test/unit/test_base.py index a0fc9ed755..9929f713f4 100644 --- a/horizon/test/unit/test_base.py +++ b/horizon/test/unit/test_base.py @@ -323,12 +323,6 @@ class HorizonTests(BaseHorizonTests): # Restore settings settings.SECURE_PROXY_SSL_HEADER = None - def test_urls_ngdetails(self): - resp = self.client.get("/ngdetails/") - self.assertEqual(200, resp.status_code) - resp = self.client.get("/ngdetails/OS::Glance::Image/xxxxx-xxx") - self.assertEqual(200, resp.status_code) - class GetUserHomeTests(BaseHorizonTests): """Test get_user_home parameters.""" diff --git a/openstack_dashboard/test/unit/test_views.py b/openstack_dashboard/test/unit/test_views.py index 66a1a6a505..ea23e4a6b7 100644 --- a/openstack_dashboard/test/unit/test_views.py +++ b/openstack_dashboard/test/unit/test_views.py @@ -44,3 +44,9 @@ class DashboardViewsTest(test.TestCase): url = views.get_url_with_pagination( req, None, 'prev', url_string, None) self.assertEqual(six.text_type('/project/instances/?prev=id'), url) + + def test_urls_ngdetails(self): + resp = self.client.get("/ngdetails/") + self.assertEqual(200, resp.status_code) + resp = self.client.get("/ngdetails/OS::Glance::Image/xxxxx-xxx") + self.assertEqual(200, resp.status_code) diff --git a/openstack_dashboard/test/urls.py b/openstack_dashboard/test/urls.py index 2b9024e394..48b262a3b7 100644 --- a/openstack_dashboard/test/urls.py +++ b/openstack_dashboard/test/urls.py @@ -25,6 +25,7 @@ from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.views import defaults import horizon.base +from horizon.browsers import views as browsers_views from openstack_dashboard.api import rest from openstack_dashboard.test.jasmine import jasmine @@ -38,6 +39,9 @@ urlpatterns = [ url(r'^api/', include(rest.urls)), url(r'^jasmine/(.*?)$', jasmine.dispatcher), url(r'', horizon.base._wrapped_include(horizon.urls)), + url(r'^ngdetails/', + browsers_views.AngularDetailsView.as_view(), + name='ngdetails'), ] # Development static app and project media serving using the staticfiles app. diff --git a/openstack_dashboard/urls.py b/openstack_dashboard/urls.py index 8ddd37ec01..17765076da 100644 --- a/openstack_dashboard/urls.py +++ b/openstack_dashboard/urls.py @@ -29,6 +29,8 @@ from django.views import defaults import horizon import horizon.base +from horizon.browsers import views as browsers_views +from horizon.decorators import require_auth from openstack_dashboard.api import rest from openstack_dashboard import views @@ -40,6 +42,13 @@ urlpatterns = [ url(r'', horizon.base._wrapped_include(horizon.urls)), ] +# add URL for ngdetails +ngdetails_url = url(r'^ngdetails/', + browsers_views.AngularDetailsView.as_view(), + name='ngdetails') +urlpatterns.append(ngdetails_url) +horizon.base._decorate_urlconf([ngdetails_url], require_auth) + for u in getattr(settings, 'AUTHENTICATION_URLS', ['openstack_auth.urls']): urlpatterns.append(url(r'^auth/', include(u)))