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.

Conflicts:
	openstack_dashboard/test/urls.py
	openstack_dashboard/urls.py

The above conflicts are caused by bp/django2-support which landed in Rocky,
particully by https://review.openstack.org/#/c/527323/12.

Another problem:

ngdetails url doesn't have project prefix after Ocata release, pls see:
https://github.com/openstack/horizon/blob/stable/ocata/ \
    openstack_dashboard/static/app/core/images/images.service.js#L59
https://github.com/openstack/horizon/blob/stable/pike/ \
    openstack_dashboard/static/app/core/images/images.service.js#L69

So the following simple changes need to be made in urls.py
in addition to the primitive backport patches.

-ngdetails_url = url(r'^ngdetails/',
+ngdetails_url = url(r'^project/ngdetails/',

Change-Id: Ib039417b4e666c2341f17ac05fd7723bc758816c
Closes-Bug: #1754133
Closes-Bug: #1753557
(cherry picked from commit f494c6f2d4)
(cherry picked from commit 6f6f46dc6d)
Signed-off-by: Zhang Hua <joshua.zhang@canonical.com>
This commit is contained in:
Shu Muto 2018-03-14 11:43:12 +09:00 committed by Zhang Hua
parent f557a8dd34
commit c920dc9d42
5 changed files with 38 additions and 13 deletions

View File

@ -865,13 +865,6 @@ class Site(Registry, HorizonComponent):
urlpatterns.append(url(r'^%s/' % dash.slug,
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

View File

@ -326,12 +326,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."""

View File

@ -24,6 +24,8 @@ from django.conf.urls import url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns # noqa
from django.views import defaults
from horizon.browsers import views as browsers_views
from openstack_dashboard.api import rest
from openstack_dashboard.test.jasmine import jasmine
from openstack_dashboard import views
@ -36,6 +38,9 @@ urlpatterns = [
url(r'^api/', include(rest.urls)),
url(r'^jasmine/(.*?)$', jasmine.dispatcher),
url(r'', include(horizon.urls)),
url(r'^project/ngdetails/',
browsers_views.AngularDetailsView.as_view(),
name='ngdetails'),
]
# Development static app and project media serving using the staticfiles app.

View File

@ -0,0 +1,23 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from openstack_dashboard.test import helpers as test
class DashboardViewsTest(test.TestCase):
def test_urls_ngdetails(self):
resp = self.client.get("/project/ngdetails/")
self.assertEqual(200, resp.status_code)
resp = self.client.get("/project/ngdetails/"
"OS::Glance::Image/xxxxx-xxx")
self.assertEqual(200, resp.status_code)

View File

@ -28,6 +28,9 @@ from django.contrib.staticfiles.urls import staticfiles_urlpatterns # noqa
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
@ -38,6 +41,13 @@ urlpatterns = [
url(r'', include(horizon.urls)),
]
# add URL for ngdetails
ngdetails_url = url(r'^project/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)))