Address RemovedInDjango40Warning (3)

In Django 3.1, django.conf.urls.url() is deprecated
in favor of django.urls.re_path().

https://docs.djangoproject.com/en/4.0/releases/3.1/#id2

Change-Id: I484694f8718f61c022126a1935cf28fce075894b
This commit is contained in:
Akihiro Motoki 2022-01-27 00:07:02 +09:00
parent cd7c1b5110
commit d9266fd82c
89 changed files with 725 additions and 710 deletions

View File

@ -458,13 +458,13 @@ URLs
----
The auto-generated ``urls.py`` file is like::
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.mydashboard.mypanel import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
]

View File

@ -209,12 +209,12 @@ urls.py
Now that we have a panel, we need to provide a URL so that users can visit our
new panel! This URL generally will point to a view.::
from django.conf.urls import url
from django.urls import re_path
from myplugin.content.mypanel import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
]
views.py

View File

@ -176,17 +176,17 @@ the ``mypanel`` directory and add the following as a new url pattern::
The complete ``urls.py`` file should look like this::
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.mydashboard.mypanel import views
urlpatterns = [
url(r'^$',
views.IndexView.as_view(), name='index'),
url(r'^(?P<instance_id>[^/]+)/create_snapshot/$',
views.CreateSnapshotView.as_view(),
name='create_snapshot'),
re_path(r'^$',
views.IndexView.as_view(), name='index'),
re_path(r'^(?P<instance_id>[^/]+)/create_snapshot/$',
views.CreateSnapshotView.as_view(),
name='create_snapshot'),
]

View File

@ -31,8 +31,8 @@ import os
from django.conf import settings
from django.conf.urls import include
from django.conf.urls import url
from django.core.exceptions import ImproperlyConfigured
from django.urls import re_path
from django.urls import reverse
from django.utils.functional import empty
from django.utils.functional import SimpleLazyObject
@ -550,14 +550,15 @@ class Dashboard(Registry, HorizonComponent):
default_panel = panel
continue
url_slug = panel.slug.replace('.', '/')
urlpatterns.append(url(r'^%s/' % url_slug,
_wrapped_include(panel._decorated_urls)))
urlpatterns.append(
re_path(r'^%s/' % url_slug,
_wrapped_include(panel._decorated_urls)))
# Now the default view, which should come last
if not default_panel:
raise NotRegistered('The default panel "%s" is not registered.'
% self.default_panel)
urlpatterns.append(
url(r'', _wrapped_include(default_panel._decorated_urls)))
re_path(r'', _wrapped_include(default_panel._decorated_urls)))
# Apply access controls to all views in the patterns
permissions = getattr(self, 'permissions', [])
@ -871,8 +872,9 @@ class Site(Registry, HorizonComponent):
# Compile the dynamic urlconf.
for dash in self._registry.values():
urlpatterns.append(url(r'^%s/' % dash.slug,
_wrapped_include(dash._decorated_urls)))
urlpatterns.append(
re_path(r'^%s/' % dash.slug,
_wrapped_include(dash._decorated_urls)))
# Return the three arguments to django.conf.urls.include
return urlpatterns, self.namespace, self.slug

View File

@ -10,11 +10,11 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from {{ dash_path }}.{{ panel_name }} import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
]

View File

@ -18,7 +18,7 @@
from django.conf import settings
from django.conf.urls import include
from django.conf.urls import url
from django.urls import re_path
from django.utils import timezone
from django.views.decorators.http import last_modified
from django.views.generic import TemplateView
@ -28,28 +28,28 @@ from horizon.test.jasmine import jasmine
from horizon import views
urlpatterns = [
url(r'^home/$', views.user_home, name='user_home')
re_path(r'^home/$', views.user_home, name='user_home')
]
last_modified_date = timezone.now()
# Client-side i18n URLconf.
urlpatterns.extend([
url(r'^i18n/js/(?P<packages>\S+?)/$',
last_modified(lambda req, **kw: last_modified_date)(
i18n.JavaScriptCatalog.as_view()),
name='jsi18n'),
url(r'^i18n/setlang/$',
i18n.set_language,
name="set_language"),
url(r'^i18n/', include('django.conf.urls.i18n'))
re_path(r'^i18n/js/(?P<packages>\S+?)/$',
last_modified(lambda req, **kw: last_modified_date)(
i18n.JavaScriptCatalog.as_view()),
name='jsi18n'),
re_path(r'^i18n/setlang/$',
i18n.set_language,
name="set_language"),
re_path(r'^i18n/', include('django.conf.urls.i18n'))
])
if settings.DEBUG:
urlpatterns.extend([
url(r'^jasmine-legacy/$',
TemplateView.as_view(
template_name="horizon/jasmine/jasmine_legacy.html"),
name='jasmine_tests'),
url(r'^jasmine/.*?$', jasmine.dispatcher),
re_path(r'^jasmine-legacy/$',
TemplateView.as_view(
template_name="horizon/jasmine/jasmine_legacy.html"),
name='jasmine_tests'),
re_path(r'^jasmine/.*?$', jasmine.dispatcher),
])

View File

@ -10,10 +10,10 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from horizon.test.test_dashboards.cats.kittens.views import IndexView
urlpatterns = [
url(r'^$', IndexView.as_view(), name='index'),
re_path(r'^$', IndexView.as_view(), name='index'),
]

View File

@ -10,10 +10,10 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from horizon.test.test_dashboards.cats.tigers.views import IndexView
urlpatterns = [
url(r'^$', IndexView.as_view(), name='index'),
re_path(r'^$', IndexView.as_view(), name='index'),
]

View File

@ -10,12 +10,12 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from horizon.test.test_dashboards.dogs.puppies.views import IndexView
from horizon.test.test_dashboards.dogs.puppies.views import TwoTabsView
urlpatterns = [
url(r'^$', IndexView.as_view(), name='index'),
url(r'^tabs/$', TwoTabsView.as_view(), name='tabs'),
re_path(r'^$', IndexView.as_view(), name='index'),
re_path(r'^tabs/$', TwoTabsView.as_view(), name='tabs'),
]

View File

@ -21,9 +21,9 @@ URL patterns for testing Horizon views.
"""
from django.conf.urls import include
from django.conf.urls import url
from django.contrib.auth import views
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.urls import re_path
from django.views.generic import TemplateView
import horizon
@ -32,16 +32,16 @@ from horizon.test.jasmine import jasmine
urlpatterns = [
url(r'', horizon.base._wrapped_include(horizon.urls)),
url(r"auth/login/",
views.LoginView.as_view(template_name="auth/login.html"),
name='login'),
url(r'auth/', include('django.contrib.auth.urls')),
url(r'^jasmine/.*?$', jasmine.dispatcher),
url(r'^jasmine-legacy/$',
TemplateView.as_view(
template_name="horizon/jasmine/jasmine_legacy.html"),
name='jasmine_tests'),
re_path(r'', horizon.base._wrapped_include(horizon.urls)),
re_path(r"auth/login/",
views.LoginView.as_view(template_name="auth/login.html"),
name='login'),
re_path(r'auth/', include('django.contrib.auth.urls')),
re_path(r'^jasmine/.*?$', jasmine.dispatcher),
re_path(r'^jasmine-legacy/$',
TemplateView.as_view(
template_name="horizon/jasmine/jasmine_legacy.html"),
name='jasmine_tests'),
]
urlpatterns += staticfiles_urlpatterns()

View File

@ -12,14 +12,15 @@
# limitations under the License.
from django.conf.urls import include
from django.conf.urls import url
from django.urls import re_path
from django.views import generic
from openstack_auth import views
urlpatterns = [
url(r"", include('openstack_auth.urls')),
url(r"^websso/$", views.websso, name='websso'),
url(r"^$", generic.TemplateView.as_view(template_name="auth/blank.html"))
re_path(r"", include('openstack_auth.urls')),
re_path(r"^websso/$", views.websso, name='websso'),
re_path(r"^$",
generic.TemplateView.as_view(template_name="auth/blank.html"))
]

View File

@ -12,7 +12,7 @@
# limitations under the License.
from django.conf import settings
from django.conf.urls import url
from django.urls import re_path
from django.views import generic
from openstack_auth import utils
@ -20,30 +20,31 @@ from openstack_auth import views
urlpatterns = [
url(r"^login/$", views.login, name='login'),
url(r"^logout/$", views.logout, name='logout'),
url(r'^switch/(?P<tenant_id>[^/]+)/$', views.switch,
name='switch_tenants'),
url(r'^switch_services_region/(?P<region_name>[^/]+)/$',
views.switch_region,
name='switch_services_region'),
url(r'^switch_keystone_provider/(?P<keystone_provider>[^/]+)/$',
views.switch_keystone_provider,
name='switch_keystone_provider'),
url(r'^switch_system_scope/$',
views.switch_system_scope,
name='switch_system_scope'),
re_path(r"^login/$", views.login, name='login'),
re_path(r"^logout/$", views.logout, name='logout'),
re_path(r'^switch/(?P<tenant_id>[^/]+)/$', views.switch,
name='switch_tenants'),
re_path(r'^switch_services_region/(?P<region_name>[^/]+)/$',
views.switch_region,
name='switch_services_region'),
re_path(r'^switch_keystone_provider/(?P<keystone_provider>[^/]+)/$',
views.switch_keystone_provider,
name='switch_keystone_provider'),
re_path(r'^switch_system_scope/$',
views.switch_system_scope,
name='switch_system_scope'),
]
if utils.allow_expired_passowrd_change():
urlpatterns.append(
url(r'^password/(?P<user_id>[^/]+)/$', views.PasswordView.as_view(),
name='password')
re_path(r'^password/(?P<user_id>[^/]+)/$',
views.PasswordView.as_view(),
name='password')
)
if settings.WEBSSO_ENABLED:
urlpatterns += [
url(r"^websso/$", views.websso, name='websso'),
url(r"^error/$",
generic.TemplateView.as_view(template_name="403.html"))
re_path(r"^websso/$", views.websso, name='websso'),
re_path(r"^error/$",
generic.TemplateView.as_view(template_name="403.html"))
]

View File

@ -11,7 +11,8 @@
# 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 django.conf import urls
from django.urls import re_path
urlpatterns = []
@ -27,6 +28,6 @@ def register(view):
as_view() method. The url_regex attribute of the view should be a standard
Django URL regex pattern.
"""
p = urls.url(view.url_regex, view.as_view())
p = re_path(view.url_regex, view.as_view())
urlpatterns.append(p)
return view

View File

@ -12,10 +12,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.contrib.developer.form_builder import views
urlpatterns = [
url('', views.IndexView.as_view(), name='index'),
re_path('', views.IndexView.as_view(), name='index'),
]

View File

@ -14,11 +14,11 @@
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.contrib.developer.profiler import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
]

View File

@ -12,10 +12,10 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from horizon.browsers.views import AngularIndexView
urlpatterns = [
url('', AngularIndexView.as_view(), name='index'),
re_path('', AngularIndexView.as_view(), name='index'),
]

View File

@ -12,11 +12,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.contrib.developer.theme_preview import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
]

View File

@ -10,19 +10,19 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.aggregates \
import views
urlpatterns = [
url(r'^$',
views.IndexView.as_view(), name='index'),
url(r'^create/$',
views.CreateView.as_view(), name='create'),
url(r'^(?P<id>[^/]+)/update/$',
views.UpdateView.as_view(), name='update'),
url(r'^(?P<id>[^/]+)/manage_hosts/$',
views.ManageHostsView.as_view(), name='manage_hosts'),
re_path(r'^$',
views.IndexView.as_view(), name='index'),
re_path(r'^create/$',
views.CreateView.as_view(), name='create'),
re_path(r'^(?P<id>[^/]+)/update/$',
views.UpdateView.as_view(), name='update'),
re_path(r'^(?P<id>[^/]+)/manage_hosts/$',
views.ManageHostsView.as_view(), name='manage_hosts'),
]

View File

@ -10,20 +10,20 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.backups import views
urlpatterns = [
url(r'^$', views.AdminBackupsView.as_view(), name='index'),
url(r'^(?P<backup_id>[^/]+)/$',
views.AdminBackupDetailView.as_view(),
name='detail'),
url(r'^(?P<backup_id>[^/]+)/restore/$',
views.AdminRestoreBackupView.as_view(),
name='restore'),
url(r'^(?P<backup_id>[^/]+)/update_status$',
views.UpdateStatusView.as_view(),
name='update_status'),
re_path(r'^$', views.AdminBackupsView.as_view(), name='index'),
re_path(r'^(?P<backup_id>[^/]+)/$',
views.AdminBackupDetailView.as_view(),
name='detail'),
re_path(r'^(?P<backup_id>[^/]+)/restore/$',
views.AdminRestoreBackupView.as_view(),
name='restore'),
re_path(r'^(?P<backup_id>[^/]+)/update_status$',
views.UpdateStatusView.as_view(),
name='update_status'),
]

View File

@ -12,13 +12,13 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.defaults import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^update_defaults$',
views.UpdateDefaultQuotasView.as_view(), name='update_defaults'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^update_defaults$',
views.UpdateDefaultQuotasView.as_view(), name='update_defaults'),
]

View File

@ -16,7 +16,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from django.utils.translation import gettext_lazy as _
from horizon.browsers.views import AngularIndexView
@ -28,16 +28,17 @@ if setting_utils.get_dict_config('ANGULAR_FEATURES', 'flavors_panel'):
title = _("Flavors")
# New angular panel
urlpatterns = [
url(r'^$', AngularIndexView.as_view(title=title), name='index'),
url(r'^create/$', AngularIndexView.as_view(title=title),
name='create'),
url(r'^(?P<id>[^/]+)/update/$', AngularIndexView.as_view(title=title),
name='index'),
re_path(r'^$', AngularIndexView.as_view(title=title), name='index'),
re_path(r'^create/$', AngularIndexView.as_view(title=title),
name='create'),
re_path(r'^(?P<id>[^/]+)/update/$',
AngularIndexView.as_view(title=title),
name='index'),
]
else:
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(r'^(?P<id>[^/]+)/update/$',
views.UpdateView.as_view(), name='update'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^create/$', views.CreateView.as_view(), name='create'),
re_path(r'^(?P<id>[^/]+)/update/$',
views.UpdateView.as_view(), name='update'),
]

View File

@ -13,14 +13,14 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.floating_ips import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^allocate/$', views.AllocateView.as_view(), name='allocate'),
url(r'^(?P<floating_ip_id>[^/]+)/detail/$',
views.DetailView.as_view(), name='detail')
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^allocate/$', views.AllocateView.as_view(), name='allocate'),
re_path(r'^(?P<floating_ip_id>[^/]+)/detail/$',
views.DetailView.as_view(), name='detail')
]

View File

@ -10,13 +10,15 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.group_types.specs \
import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(r'^(?P<key>[^/]+)/edit/$', views.EditView.as_view(), name='edit'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^create/$', views.CreateView.as_view(), name='create'),
re_path(r'^(?P<key>[^/]+)/edit/$',
views.EditView.as_view(),
name='edit'),
]

View File

@ -11,7 +11,7 @@
# under the License.
from django.conf.urls import include
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.group_types.specs \
import urls as specs_urls
@ -20,12 +20,12 @@ from openstack_dashboard.dashboards.admin.group_types \
urlpatterns = [
url(r'^$', views.GroupTypesView.as_view(), name='index'),
url(r'^create_type$', views.CreateGroupTypeView.as_view(),
name='create_type'),
url(r'^(?P<type_id>[^/]+)/update_type/$',
views.EditGroupTypeView.as_view(),
name='update_type'),
url(r'^(?P<type_id>[^/]+)/specs/',
include((specs_urls, 'specs'))),
re_path(r'^$', views.GroupTypesView.as_view(), name='index'),
re_path(r'^create_type$', views.CreateGroupTypeView.as_view(),
name='create_type'),
re_path(r'^(?P<type_id>[^/]+)/update_type/$',
views.EditGroupTypeView.as_view(),
name='update_type'),
re_path(r'^(?P<type_id>[^/]+)/specs/',
include((specs_urls, 'specs'))),
]

View File

@ -10,19 +10,19 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.hypervisors.compute import views
urlpatterns = [
url(r'^(?P<compute_host>[^/]+)/evacuate_host$',
views.EvacuateHostView.as_view(),
name='evacuate_host'),
url(r'^(?P<compute_host>[^/]+)/disable_service$',
views.DisableServiceView.as_view(),
name='disable_service'),
url(r'^(?P<compute_host>[^/]+)/migrate_host$',
views.MigrateHostView.as_view(),
name='migrate_host'),
re_path(r'^(?P<compute_host>[^/]+)/evacuate_host$',
views.EvacuateHostView.as_view(),
name='evacuate_host'),
re_path(r'^(?P<compute_host>[^/]+)/disable_service$',
views.DisableServiceView.as_view(),
name='disable_service'),
re_path(r'^(?P<compute_host>[^/]+)/migrate_host$',
views.MigrateHostView.as_view(),
name='migrate_host'),
]

View File

@ -13,7 +13,7 @@
# under the License.
from django.conf.urls import include
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.hypervisors.compute \
import urls as compute_urls
@ -21,9 +21,9 @@ from openstack_dashboard.dashboards.admin.hypervisors import views
urlpatterns = [
url(r'^(?P<hypervisor>[^/]+)/$',
views.AdminDetailView.as_view(),
name='detail'),
url(r'^$', views.AdminIndexView.as_view(), name='index'),
url(r'', include((compute_urls, 'compute'))),
re_path(r'^(?P<hypervisor>[^/]+)/$',
views.AdminDetailView.as_view(),
name='detail'),
re_path(r'^$', views.AdminIndexView.as_view(), name='index'),
re_path(r'', include((compute_urls, 'compute'))),
]

View File

@ -16,7 +16,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from django.utils.translation import gettext_lazy as _
from horizon.browsers.views import AngularIndexView
@ -27,16 +27,16 @@ if setting_utils.get_dict_config('ANGULAR_FEATURES', 'images_panel'):
title = _("Images")
# New angular images
urlpatterns = [
url(r'^$', AngularIndexView.as_view(title=title), name='index'),
url(r'^(?P<image_id>[^/]+)/detail/$',
AngularIndexView.as_view(title=title), name='detail'),
re_path(r'^$', AngularIndexView.as_view(title=title), name='index'),
re_path(r'^(?P<image_id>[^/]+)/detail/$',
AngularIndexView.as_view(title=title), name='detail'),
]
else:
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(r'^(?P<image_id>[^/]+)/update/$',
views.UpdateView.as_view(), name='update'),
url(r'^(?P<image_id>[^/]+)/detail/$',
views.DetailView.as_view(), name='detail')
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^create/$', views.CreateView.as_view(), name='create'),
re_path(r'^(?P<image_id>[^/]+)/update/$',
views.UpdateView.as_view(), name='update'),
re_path(r'^(?P<image_id>[^/]+)/detail/$',
views.DetailView.as_view(), name='detail')
]

View File

@ -16,11 +16,11 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.info import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
]

View File

@ -16,7 +16,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.instances import views
@ -25,15 +25,16 @@ INSTANCES = r'^(?P<instance_id>[^/]+)/%s$'
urlpatterns = [
url(r'^$', views.AdminIndexView.as_view(), name='index'),
url(INSTANCES % 'update', views.AdminUpdateView.as_view(), name='update'),
url(INSTANCES % 'detail', views.DetailView.as_view(), name='detail'),
url(INSTANCES % 'console', views.console, name='console'),
url(INSTANCES % 'vnc', views.vnc, name='vnc'),
url(INSTANCES % 'mks', views.mks, name='mks'),
url(INSTANCES % 'spice', views.spice, name='spice'),
url(INSTANCES % 'rdp', views.rdp, name='rdp'),
url(INSTANCES % 'live_migrate', views.LiveMigrateView.as_view(),
name='live_migrate'),
url(INSTANCES % 'rescue', views.RescueView.as_view(), name='rescue'),
re_path(r'^$', views.AdminIndexView.as_view(), name='index'),
re_path(INSTANCES % 'update', views.AdminUpdateView.as_view(),
name='update'),
re_path(INSTANCES % 'detail', views.DetailView.as_view(), name='detail'),
re_path(INSTANCES % 'console', views.console, name='console'),
re_path(INSTANCES % 'vnc', views.vnc, name='vnc'),
re_path(INSTANCES % 'mks', views.mks, name='mks'),
re_path(INSTANCES % 'spice', views.spice, name='spice'),
re_path(INSTANCES % 'rdp', views.rdp, name='rdp'),
re_path(INSTANCES % 'live_migrate', views.LiveMigrateView.as_view(),
name='live_migrate'),
re_path(INSTANCES % 'rescue', views.RescueView.as_view(), name='rescue'),
]

View File

@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.metadata_defs import views
@ -21,10 +21,10 @@ NAMESPACES = r'^(?P<namespace_id>[^/]+)/%s$'
urlpatterns = [
url(r'^$', views.AdminIndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(NAMESPACES % 'update', views.UpdateView.as_view(), name='update'),
url(NAMESPACES % 'detail', views.DetailView.as_view(), name='detail'),
url(r'^(?P<id>[^/]+)/resource_types/$',
views.ManageResourceTypes.as_view(), name='resource_types'),
re_path(r'^$', views.AdminIndexView.as_view(), name='index'),
re_path(r'^create/$', views.CreateView.as_view(), name='create'),
re_path(NAMESPACES % 'update', views.UpdateView.as_view(), name='update'),
re_path(NAMESPACES % 'detail', views.DetailView.as_view(), name='detail'),
re_path(r'^(?P<id>[^/]+)/resource_types/$',
views.ManageResourceTypes.as_view(), name='resource_types'),
]

View File

@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.networks.ports import views
from openstack_dashboard.dashboards.admin.networks.ports.extensions. \
@ -22,8 +22,8 @@ PORTS = r'^(?P<port_id>[^/]+)/%s$'
urlpatterns = [
url(PORTS % 'detail', views.DetailView.as_view(), name='detail'),
url(PORTS % 'addallowedaddresspairs',
addr_pairs_views.AddAllowedAddressPair.as_view(),
name='addallowedaddresspairs'),
re_path(PORTS % 'detail', views.DetailView.as_view(), name='detail'),
re_path(PORTS % 'addallowedaddresspairs',
addr_pairs_views.AddAllowedAddressPair.as_view(),
name='addallowedaddresspairs'),
]

View File

@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.networks.subnets import views
@ -21,5 +21,5 @@ SUBNETS = r'^(?P<subnet_id>[^/]+)/%s$'
urlpatterns = [
url(SUBNETS % 'detail', views.DetailView.as_view(), name='detail'),
re_path(SUBNETS % 'detail', views.DetailView.as_view(), name='detail'),
]

View File

@ -13,7 +13,7 @@
# under the License.
from django.conf.urls import include
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.networks.agents \
import views as agent_views
@ -32,27 +32,27 @@ NETWORKS = r'^(?P<network_id>[^/]+)/%s$'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(NETWORKS % 'update', views.UpdateView.as_view(), name='update'),
url(NETWORKS % 'detail', views.DetailView.as_view(), name='detail'),
url(NETWORKS % r'detail\?tab=network_tabs__ports_tab$',
views.DetailView.as_view(), name='ports_tab'),
url(NETWORKS % r'detail\?tab=network_tabs__agents_tab$',
views.DetailView.as_view(), name='agents_tab'),
url(NETWORKS % r'detail\?tab=network_tabs__subnets_tab$',
views.DetailView.as_view(), name='subnets_tab'),
url(NETWORKS % 'agents/add',
agent_views.AddView.as_view(), name='adddhcpagent'),
url(NETWORKS % 'subnets/create',
subnet_views.CreateView.as_view(), name='createsubnet'),
url(NETWORKS % 'ports/create',
port_views.CreateView.as_view(), name='addport'),
url(r'^(?P<network_id>[^/]+)/subnets/(?P<subnet_id>[^/]+)/update$',
subnet_views.UpdateView.as_view(), name='editsubnet'),
url(r'^(?P<network_id>[^/]+)/ports/(?P<port_id>[^/]+)/update$',
port_views.UpdateView.as_view(), name='editport'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^create/$', views.CreateView.as_view(), name='create'),
re_path(NETWORKS % 'update', views.UpdateView.as_view(), name='update'),
re_path(NETWORKS % 'detail', views.DetailView.as_view(), name='detail'),
re_path(NETWORKS % r'detail\?tab=network_tabs__ports_tab$',
views.DetailView.as_view(), name='ports_tab'),
re_path(NETWORKS % r'detail\?tab=network_tabs__agents_tab$',
views.DetailView.as_view(), name='agents_tab'),
re_path(NETWORKS % r'detail\?tab=network_tabs__subnets_tab$',
views.DetailView.as_view(), name='subnets_tab'),
re_path(NETWORKS % 'agents/add',
agent_views.AddView.as_view(), name='adddhcpagent'),
re_path(NETWORKS % 'subnets/create',
subnet_views.CreateView.as_view(), name='createsubnet'),
re_path(NETWORKS % 'ports/create',
port_views.CreateView.as_view(), name='addport'),
re_path(r'^(?P<network_id>[^/]+)/subnets/(?P<subnet_id>[^/]+)/update$',
subnet_views.UpdateView.as_view(), name='editsubnet'),
re_path(r'^(?P<network_id>[^/]+)/ports/(?P<port_id>[^/]+)/update$',
port_views.UpdateView.as_view(), name='editport'),
url(r'^subnets/', include((subnet_urls, 'subnets'))),
url(r'^ports/', include((port_urls, 'ports'))),
re_path(r'^subnets/', include((subnet_urls, 'subnets'))),
re_path(r'^ports/', include((port_urls, 'ports'))),
]

View File

@ -13,11 +13,11 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.ngflavors import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
]

View File

@ -17,11 +17,11 @@
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.overview import views
urlpatterns = [
url(r'^$', views.GlobalOverview.as_view(), name='index'),
re_path(r'^$', views.GlobalOverview.as_view(), name='index'),
]

View File

@ -10,7 +10,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.rbac_policies import views
@ -19,12 +19,12 @@ RBAC_POLICY_URL = r'^(?P<rbac_policy_id>[^/]+)/%s$'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(RBAC_POLICY_URL % '$',
views.DetailView.as_view(),
name='detail'),
url(RBAC_POLICY_URL % 'update',
views.UpdateView.as_view(),
name='update'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^create/$', views.CreateView.as_view(), name='create'),
re_path(RBAC_POLICY_URL % '$',
views.DetailView.as_view(),
name='detail'),
re_path(RBAC_POLICY_URL % 'update',
views.UpdateView.as_view(),
name='update'),
]

View File

@ -12,12 +12,12 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.routers.ports import views
PORTS = r'^(?P<port_id>[^/]+)/%s$'
urlpatterns = [
url(PORTS % 'detail', views.DetailView.as_view(), name='detail'),
re_path(PORTS % 'detail', views.DetailView.as_view(), name='detail'),
]

View File

@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.routers import views
@ -21,15 +21,15 @@ ROUTER_URL = r'^(?P<router_id>[^/]+)/%s'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(ROUTER_URL % '$',
views.DetailView.as_view(),
name='detail'),
url(ROUTER_URL % 'update',
views.UpdateView.as_view(),
name='update'),
url(r'^(?P<l3_agent_id>[^/]+)/l3_agent_list',
views.L3AgentView.as_view(),
name='l3_agent_list'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^create/$', views.CreateView.as_view(), name='create'),
re_path(ROUTER_URL % '$',
views.DetailView.as_view(),
name='detail'),
re_path(ROUTER_URL % 'update',
views.UpdateView.as_view(),
name='update'),
re_path(r'^(?P<l3_agent_id>[^/]+)/l3_agent_list',
views.L3AgentView.as_view(),
name='l3_agent_list'),
]

View File

@ -10,17 +10,17 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.snapshots import views
urlpatterns = [
url(r'^$', views.SnapshotsView.as_view(), name='index'),
url(r'^(?P<snapshot_id>[^/]+)$',
views.DetailView.as_view(),
name='detail'),
url(r'^(?P<snapshot_id>[^/]+)/update_status/$',
views.UpdateStatusView.as_view(),
name='update_status'),
re_path(r'^$', views.SnapshotsView.as_view(), name='index'),
re_path(r'^(?P<snapshot_id>[^/]+)$',
views.DetailView.as_view(),
name='detail'),
re_path(r'^(?P<snapshot_id>[^/]+)/update_status/$',
views.UpdateStatusView.as_view(),
name='update_status'),
]

View File

@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from django.utils.translation import gettext_lazy as _
from horizon.browsers.views import AngularIndexView
@ -20,7 +20,7 @@ from horizon.browsers.views import AngularIndexView
title = _("Trunks")
urlpatterns = [
url(r'^$', AngularIndexView.as_view(title=title), name='index'),
url(r'^(?P<trunk_id>[^/]+)/$',
AngularIndexView.as_view(title=title), name='detail'),
re_path(r'^$', AngularIndexView.as_view(title=title), name='index'),
re_path(r'^(?P<trunk_id>[^/]+)/$',
AngularIndexView.as_view(title=title), name='detail'),
]

View File

@ -12,13 +12,13 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.vg_snapshots import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<vg_snapshot_id>[^/]+)/detail/$',
views.DetailView.as_view(),
name='detail'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^(?P<vg_snapshot_id>[^/]+)/detail/$',
views.DetailView.as_view(),
name='detail'),
]

View File

@ -12,23 +12,23 @@
# License for the specific language governing permissions and limitations
# under the License.
from django.conf.urls import url
from django.urls import re_path
from openstack_dashboard.dashboards.admin.volume_groups import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<group_id>[^/]+)$',
views.DetailView.as_view(),
name='detail'),
url(r'^(?P<group_id>[^/]+)/remove_volumese/$',
views.RemoveVolumesView.as_view(),
name='remove_volumes'),
url(r'^(?P<group_id>[^/]+)/delete/$',
views.DeleteView.as_view(),
name='delete'),
url(r'^(?P<group_id>[^/]+)/manage/$',
views.ManageView.as_view(),
name='manage'),
re_path(r'^$', views.IndexView.as_view(), name='index'),
re_path(r'^(?P<group_id>[^/]+)$',
views.DetailView.as_view(),
name='detail'),
re_path(r'^(?P<group_id>[^/]+)/remove_volumese/$',
views.RemoveVolumesView.as_view(),
name='remove_volumes'),
re_path(r'^(?P<group_id>[^/]+)/delete/$',
views.DeleteView.as_view(),
name='delete'),
re_path(r'^(?P<group_id>[^/]+)/manage/$',
views.ManageView.as_view(),
name='manage'),
]