[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