[PATCH 2/5] urls: Update url pattern functions
Andrew Donnellan
ajd at linux.ibm.com
Fri Aug 28 00:14:03 AEST 2020
Django 3.1 deprecates django.conf.urls.url() as an alias for
django.urls.re_path(). Also switch to using django.urls.include() rather
than django.conf.urls.include().
Signed-off-by: Andrew Donnellan <ajd at linux.ibm.com>
---
patchwork/urls.py | 331 +++++++++++++++++++++++-----------------------
1 file changed, 167 insertions(+), 164 deletions(-)
diff --git a/patchwork/urls.py b/patchwork/urls.py
index 7d888d4a3dc0..280d28d8e5bd 100644
--- a/patchwork/urls.py
+++ b/patchwork/urls.py
@@ -4,10 +4,9 @@
# SPDX-License-Identifier: GPL-2.0-or-later
from django.conf import settings
-from django.conf.urls import url, include
from django.contrib import admin
from django.contrib.auth import views as auth_views
-from django.urls import reverse_lazy
+from django.urls import include, re_path, reverse_lazy
from patchwork.views import about as about_views
from patchwork.views import api as api_views
@@ -27,15 +26,16 @@ from patchwork.views import xmlrpc as xmlrpc_views
admin.autodiscover()
urlpatterns = [
- url(r'^admin/', admin.site.urls),
+ re_path(r'^admin/', admin.site.urls),
- url(r'^$', project_views.project_list, name='project-list'),
- url(r'^project/(?P<project_id>[^/]+)/list/$', patch_views.patch_list,
- name='patch-list'),
- url(r'^project/(?P<project_id>[^/]+)/bundles/$', bundle_views.bundle_list,
- name='bundle-list'),
- url(r'^project/(?P<project_id>[^/]+)/$', project_views.project_detail,
- name='project-detail'),
+ re_path(r'^$', project_views.project_list, name='project-list'),
+ re_path(r'^project/(?P<project_id>[^/]+)/list/$', patch_views.patch_list,
+ name='patch-list'),
+ re_path(r'^project/(?P<project_id>[^/]+)/bundles/$',
+ bundle_views.bundle_list,
+ name='bundle-list'),
+ re_path(r'^project/(?P<project_id>[^/]+)/$', project_views.project_detail,
+ name='project-detail'),
# patch views
# NOTE(dja): Per the RFC, msgids can contain slashes. There doesn't seem
@@ -49,128 +49,129 @@ urlpatterns = [
# work, but it is RECOMMENDED by the RFC that the right hand side of the @
# contains a domain, so I think breaking on messages that have "domains"
# ending in /raw/ or /mbox/ is good enough.
- url(r'^project/(?P<project_id>[^/]+)/patch/(?P<msgid>.+)/raw/$',
- patch_views.patch_raw, name='patch-raw'),
- url(r'^project/(?P<project_id>[^/]+)/patch/(?P<msgid>.+)/mbox/$',
- patch_views.patch_mbox, name='patch-mbox'),
- url(r'^project/(?P<project_id>[^/]+)/patch/(?P<msgid>.+)/$',
- patch_views.patch_detail, name='patch-detail'),
+ re_path(r'^project/(?P<project_id>[^/]+)/patch/(?P<msgid>.+)/raw/$',
+ patch_views.patch_raw, name='patch-raw'),
+ re_path(r'^project/(?P<project_id>[^/]+)/patch/(?P<msgid>.+)/mbox/$',
+ patch_views.patch_mbox, name='patch-mbox'),
+ re_path(r'^project/(?P<project_id>[^/]+)/patch/(?P<msgid>.+)/$',
+ patch_views.patch_detail, name='patch-detail'),
# ... old-style /patch/N/* urls
- url(r'^patch/(?P<patch_id>\d+)/raw/$', patch_views.patch_raw_by_id,
- name='patch-raw-redirect'),
- url(r'^patch/(?P<patch_id>\d+)/mbox/$', patch_views.patch_mbox_by_id,
- name='patch-mbox-redirect'),
- url(r'^patch/(?P<patch_id>\d+)/$', patch_views.patch_by_id,
- name='patch-id-redirect'),
+ re_path(r'^patch/(?P<patch_id>\d+)/raw/$', patch_views.patch_raw_by_id,
+ name='patch-raw-redirect'),
+ re_path(r'^patch/(?P<patch_id>\d+)/mbox/$', patch_views.patch_mbox_by_id,
+ name='patch-mbox-redirect'),
+ re_path(r'^patch/(?P<patch_id>\d+)/$', patch_views.patch_by_id,
+ name='patch-id-redirect'),
# cover views
- url(r'^project/(?P<project_id>[^/]+)/cover/(?P<msgid>.+)/mbox/$',
- cover_views.cover_mbox, name='cover-mbox'),
- url(r'^project/(?P<project_id>[^/]+)/cover/(?P<msgid>.+)/$',
- cover_views.cover_detail, name='cover-detail'),
+ re_path(r'^project/(?P<project_id>[^/]+)/cover/(?P<msgid>.+)/mbox/$',
+ cover_views.cover_mbox, name='cover-mbox'),
+ re_path(r'^project/(?P<project_id>[^/]+)/cover/(?P<msgid>.+)/$',
+ cover_views.cover_detail, name='cover-detail'),
# ... old-style /cover/N/* urls
- url(r'^cover/(?P<cover_id>\d+)/mbox/$', cover_views.cover_mbox_by_id,
- name='cover-mbox-redirect'),
- url(r'^cover/(?P<cover_id>\d+)/$', cover_views.cover_by_id,
- name='cover-id-redirect'),
+ re_path(r'^cover/(?P<cover_id>\d+)/mbox/$', cover_views.cover_mbox_by_id,
+ name='cover-mbox-redirect'),
+ re_path(r'^cover/(?P<cover_id>\d+)/$', cover_views.cover_by_id,
+ name='cover-id-redirect'),
# comment views
- url(r'^comment/(?P<comment_id>\d+)/$', comment_views.comment,
- name='comment-redirect'),
+ re_path(r'^comment/(?P<comment_id>\d+)/$', comment_views.comment,
+ name='comment-redirect'),
# series views
- url(r'^series/(?P<series_id>\d+)/mbox/$', series_views.series_mbox,
- name='series-mbox'),
+ re_path(r'^series/(?P<series_id>\d+)/mbox/$', series_views.series_mbox,
+ name='series-mbox'),
# logged-in user stuff
- url(r'^user/$', user_views.profile, name='user-profile'),
- url(r'^user/todo/$', user_views.todo_lists,
- name='user-todos'),
- url(r'^user/todo/(?P<project_id>[^/]+)/$', user_views.todo_list,
- name='user-todo'),
- url(r'^user/bundles/$', bundle_views.bundle_list,
- name='user-bundles'),
-
- url(r'^user/link/$', user_views.link,
- name='user-link'),
- url(r'^user/unlink/(?P<person_id>[^/]+)/$', user_views.unlink,
- name='user-unlink'),
+ re_path(r'^user/$', user_views.profile, name='user-profile'),
+ re_path(r'^user/todo/$', user_views.todo_lists,
+ name='user-todos'),
+ re_path(r'^user/todo/(?P<project_id>[^/]+)/$', user_views.todo_list,
+ name='user-todo'),
+ re_path(r'^user/bundles/$', bundle_views.bundle_list,
+ name='user-bundles'),
+
+ re_path(r'^user/link/$', user_views.link,
+ name='user-link'),
+ re_path(r'^user/unlink/(?P<person_id>[^/]+)/$', user_views.unlink,
+ name='user-unlink'),
# password change
- url(r'^user/password-change/$',
- auth_views.PasswordChangeView.as_view(),
- name='password_change'),
- url(r'^user/password-change/done/$',
- auth_views.PasswordChangeDoneView.as_view(),
- name='password_change_done'),
- url(r'^user/password-reset/$',
- auth_views.PasswordResetView.as_view(),
- name='password_reset'),
- url(r'^user/password-reset/mail-sent/$',
- auth_views.PasswordResetDoneView.as_view(),
- name='password_reset_done'),
- url(r'^user/password-reset/(?P<uidb64>[0-9A-Za-z_\-]+)/'
- r'(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
- auth_views.PasswordResetConfirmView.as_view(),
- name='password_reset_confirm'),
- url(r'^user/password-reset/complete/$',
- auth_views.PasswordResetCompleteView.as_view(),
- name='password_reset_complete'),
+ re_path(r'^user/password-change/$',
+ auth_views.PasswordChangeView.as_view(),
+ name='password_change'),
+ re_path(r'^user/password-change/done/$',
+ auth_views.PasswordChangeDoneView.as_view(),
+ name='password_change_done'),
+ re_path(r'^user/password-reset/$',
+ auth_views.PasswordResetView.as_view(),
+ name='password_reset'),
+ re_path(r'^user/password-reset/mail-sent/$',
+ auth_views.PasswordResetDoneView.as_view(),
+ name='password_reset_done'),
+ re_path(r'^user/password-reset/(?P<uidb64>[0-9A-Za-z_\-]+)/'
+ r'(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
+ auth_views.PasswordResetConfirmView.as_view(),
+ name='password_reset_confirm'),
+ re_path(r'^user/password-reset/complete/$',
+ auth_views.PasswordResetCompleteView.as_view(),
+ name='password_reset_complete'),
# login/logout
- url(r'^user/login/$', auth_views.LoginView.as_view(
- template_name='patchwork/login.html'),
- name='auth_login'),
- url(r'^user/logout/$', auth_views.LogoutView.as_view(
- next_page=reverse_lazy('project-list')),
- name='auth_logout'),
+ re_path(r'^user/login/$', auth_views.LoginView.as_view(
+ template_name='patchwork/login.html'),
+ name='auth_login'),
+ re_path(r'^user/logout/$', auth_views.LogoutView.as_view(
+ next_page=reverse_lazy('project-list')),
+ name='auth_logout'),
# registration
- url(r'^register/', user_views.register, name='user-register'),
+ re_path(r'^register/', user_views.register, name='user-register'),
# public view for bundles
- url(r'^bundle/(?P<username>[^/]*)/(?P<bundlename>[^/]*)/$',
- bundle_views.bundle_detail,
- name='bundle-detail'),
- url(r'^bundle/(?P<username>[^/]*)/(?P<bundlename>[^/]*)/mbox/$',
- bundle_views.bundle_mbox,
- name='bundle-mbox'),
+ re_path(r'^bundle/(?P<username>[^/]*)/(?P<bundlename>[^/]*)/$',
+ bundle_views.bundle_detail,
+ name='bundle-detail'),
+ re_path(r'^bundle/(?P<username>[^/]*)/(?P<bundlename>[^/]*)/mbox/$',
+ bundle_views.bundle_mbox,
+ name='bundle-mbox'),
- url(r'^confirm/(?P<key>[0-9a-f]+)/$', notification_views.confirm,
- name='confirm'),
+ re_path(r'^confirm/(?P<key>[0-9a-f]+)/$', notification_views.confirm,
+ name='confirm'),
# submitter autocomplete
- url(r'^submitter/$', api_views.submitters, name='api-submitters'),
- url(r'^delegate/$', api_views.delegates, name='api-delegates'),
+ re_path(r'^submitter/$', api_views.submitters, name='api-submitters'),
+ re_path(r'^delegate/$', api_views.delegates, name='api-delegates'),
# email setup
- url(r'^mail/$', mail_views.settings, name='mail-settings'),
- url(r'^mail/optout/$', mail_views.optout, name='mail-optout'),
- url(r'^mail/optin/$', mail_views.optin, name='mail-optin'),
+ re_path(r'^mail/$', mail_views.settings, name='mail-settings'),
+ re_path(r'^mail/optout/$', mail_views.optout, name='mail-optout'),
+ re_path(r'^mail/optin/$', mail_views.optin, name='mail-optin'),
# about
- url(r'^about/$', about_views.about, name='about'),
+ re_path(r'^about/$', about_views.about, name='about'),
# legacy redirects
- url(r'^help/$', about_views.redirect, name='help'),
- url(r'^help/about/$', about_views.redirect, name='help-about'),
+ re_path(r'^help/$', about_views.redirect, name='help'),
+ re_path(r'^help/about/$', about_views.redirect, name='help-about'),
]
if 'debug_toolbar' in settings.INSTALLED_APPS:
import debug_toolbar # noqa
urlpatterns += [
- url(r'^__debug__/', include(debug_toolbar.urls)),
+ re_path(r'^__debug__/', include(debug_toolbar.urls)),
]
if settings.ENABLE_XMLRPC:
urlpatterns += [
- url(r'xmlrpc/$', xmlrpc_views.xmlrpc, name='xmlrpc'),
- url(r'^project/(?P<project_id>[^/]+)/pwclientrc/$',
- pwclient_views.pwclientrc,
- name='pwclientrc'),
+ re_path(r'xmlrpc/$', xmlrpc_views.xmlrpc, name='xmlrpc'),
+ re_path(r'^project/(?P<project_id>[^/]+)/pwclientrc/$',
+ pwclient_views.pwclientrc,
+ name='pwclientrc'),
# legacy redirect
- url(r'^help/pwclient/$', about_views.redirect, name='help-pwclient'),
+ re_path(r'^help/pwclient/$', about_views.redirect,
+ name='help-pwclient'),
]
if settings.ENABLE_REST_API:
@@ -191,88 +192,90 @@ if settings.ENABLE_REST_API:
from patchwork.api import user as api_user_views # noqa
api_patterns = [
- url(r'^$',
- api_index_views.IndexView.as_view(),
- name='api-index'),
- url(r'^users/$',
- api_user_views.UserList.as_view(),
- name='api-user-list'),
- url(r'^users/(?P<pk>[^/]+)/$',
- api_user_views.UserDetail.as_view(),
- name='api-user-detail'),
- url(r'^people/$',
- api_person_views.PersonList.as_view(),
- name='api-person-list'),
- url(r'^people/(?P<pk>[^/]+)/$',
- api_person_views.PersonDetail.as_view(),
- name='api-person-detail'),
- url(r'^covers/$',
- api_cover_views.CoverList.as_view(),
- name='api-cover-list'),
- url(r'^covers/(?P<pk>[^/]+)/$',
- api_cover_views.CoverDetail.as_view(),
- name='api-cover-detail'),
- url(r'^patches/$',
- api_patch_views.PatchList.as_view(),
- name='api-patch-list'),
- url(r'^patches/(?P<pk>[^/]+)/$',
- api_patch_views.PatchDetail.as_view(),
- name='api-patch-detail'),
- url(r'^patches/(?P<patch_id>[^/]+)/checks/$',
- api_check_views.CheckListCreate.as_view(),
- name='api-check-list'),
- url(r'^patches/(?P<patch_id>[^/]+)/checks/(?P<check_id>[^/]+)/$',
- api_check_views.CheckDetail.as_view(),
- name='api-check-detail'),
- url(r'^series/$',
- api_series_views.SeriesList.as_view(),
- name='api-series-list'),
- url(r'^series/(?P<pk>[^/]+)/$',
- api_series_views.SeriesDetail.as_view(),
- name='api-series-detail'),
- url(r'^bundles/$',
- api_bundle_views.BundleList.as_view(),
- name='api-bundle-list'),
- url(r'^bundles/(?P<pk>[^/]+)/$',
- api_bundle_views.BundleDetail.as_view(),
- name='api-bundle-detail'),
- url(r'^projects/$',
- api_project_views.ProjectList.as_view(),
- name='api-project-list'),
- url(r'^projects/(?P<pk>[^/]+)/$',
- api_project_views.ProjectDetail.as_view(),
- name='api-project-detail'),
- url(r'^events/$',
- api_event_views.EventList.as_view(),
- name='api-event-list'),
+ re_path(r'^$',
+ api_index_views.IndexView.as_view(),
+ name='api-index'),
+ re_path(r'^users/$',
+ api_user_views.UserList.as_view(),
+ name='api-user-list'),
+ re_path(r'^users/(?P<pk>[^/]+)/$',
+ api_user_views.UserDetail.as_view(),
+ name='api-user-detail'),
+ re_path(r'^people/$',
+ api_person_views.PersonList.as_view(),
+ name='api-person-list'),
+ re_path(r'^people/(?P<pk>[^/]+)/$',
+ api_person_views.PersonDetail.as_view(),
+ name='api-person-detail'),
+ re_path(r'^covers/$',
+ api_cover_views.CoverList.as_view(),
+ name='api-cover-list'),
+ re_path(r'^covers/(?P<pk>[^/]+)/$',
+ api_cover_views.CoverDetail.as_view(),
+ name='api-cover-detail'),
+ re_path(r'^patches/$',
+ api_patch_views.PatchList.as_view(),
+ name='api-patch-list'),
+ re_path(r'^patches/(?P<pk>[^/]+)/$',
+ api_patch_views.PatchDetail.as_view(),
+ name='api-patch-detail'),
+ re_path(r'^patches/(?P<patch_id>[^/]+)/checks/$',
+ api_check_views.CheckListCreate.as_view(),
+ name='api-check-list'),
+ re_path(r'^patches/(?P<patch_id>[^/]+)/checks/(?P<check_id>[^/]+)/$',
+ api_check_views.CheckDetail.as_view(),
+ name='api-check-detail'),
+ re_path(r'^series/$',
+ api_series_views.SeriesList.as_view(),
+ name='api-series-list'),
+ re_path(r'^series/(?P<pk>[^/]+)/$',
+ api_series_views.SeriesDetail.as_view(),
+ name='api-series-detail'),
+ re_path(r'^bundles/$',
+ api_bundle_views.BundleList.as_view(),
+ name='api-bundle-list'),
+ re_path(r'^bundles/(?P<pk>[^/]+)/$',
+ api_bundle_views.BundleDetail.as_view(),
+ name='api-bundle-detail'),
+ re_path(r'^projects/$',
+ api_project_views.ProjectList.as_view(),
+ name='api-project-list'),
+ re_path(r'^projects/(?P<pk>[^/]+)/$',
+ api_project_views.ProjectDetail.as_view(),
+ name='api-project-detail'),
+ re_path(r'^events/$',
+ api_event_views.EventList.as_view(),
+ name='api-event-list'),
]
api_1_1_patterns = [
- url(r'^patches/(?P<pk>[^/]+)/comments/$',
- api_comment_views.PatchCommentList.as_view(),
- name='api-patch-comment-list'),
- url(r'^covers/(?P<pk>[^/]+)/comments/$',
- api_comment_views.CoverCommentList.as_view(),
- name='api-cover-comment-list'),
+ re_path(r'^patches/(?P<pk>[^/]+)/comments/$',
+ api_comment_views.PatchCommentList.as_view(),
+ name='api-patch-comment-list'),
+ re_path(r'^covers/(?P<pk>[^/]+)/comments/$',
+ api_comment_views.CoverCommentList.as_view(),
+ name='api-cover-comment-list'),
]
urlpatterns += [
- url(r'^api/(?:(?P<version>(1.0|1.1|1.2))/)?', include(api_patterns)),
- url(r'^api/(?:(?P<version>(1.1|1.2))/)?', include(api_1_1_patterns)),
+ re_path(r'^api/(?:(?P<version>(1.0|1.1|1.2))/)?',
+ include(api_patterns)),
+ re_path(r'^api/(?:(?P<version>(1.1|1.2))/)?',
+ include(api_1_1_patterns)),
# token change
- url(r'^user/generate-token/$', user_views.generate_token,
- name='generate_token'),
+ re_path(r'^user/generate-token/$', user_views.generate_token,
+ name='generate_token'),
]
# redirect from old urls
if settings.COMPAT_REDIR:
urlpatterns += [
- url(r'^user/bundle/(?P<bundle_id>[^/]+)/$',
- bundle_views.bundle_detail_redir,
- name='bundle-redir'),
- url(r'^user/bundle/(?P<bundle_id>[^/]+)/mbox/$',
- bundle_views.bundle_mbox_redir,
- name='bundle-mbox-redir'),
+ re_path(r'^user/bundle/(?P<bundle_id>[^/]+)/$',
+ bundle_views.bundle_detail_redir,
+ name='bundle-redir'),
+ re_path(r'^user/bundle/(?P<bundle_id>[^/]+)/mbox/$',
+ bundle_views.bundle_mbox_redir,
+ name='bundle-mbox-redir'),
]
--
2.20.1
More information about the Patchwork
mailing list