From ff6c68b21c9388c506d34a27e0d9f1a14465c7de Mon Sep 17 00:00:00 2001 From: Agate Berriot Date: Wed, 31 Aug 2022 10:29:38 +0200 Subject: [PATCH 3/5] django4: replaced urls.url with url.re_path equivalent (#68576) --- passerelle/api/urls.py | 6 +-- passerelle/apps/arcgis/urls.py | 8 ++-- passerelle/apps/bdp/urls.py | 8 ++-- passerelle/apps/clicrdv/urls.py | 16 +++---- passerelle/apps/cmis/urls.py | 4 +- passerelle/apps/csvdatasource/urls.py | 12 +++--- passerelle/apps/gdc/urls.py | 10 ++--- passerelle/apps/opendatasoft/urls.py | 10 +++-- passerelle/apps/opengis/urls.py | 10 ++--- passerelle/apps/ovh/urls.py | 8 ++-- passerelle/apps/plone_restapi/urls.py | 8 ++-- passerelle/apps/sp_fr/urls.py | 12 +++--- passerelle/base/urls.py | 22 +++++----- passerelle/contrib/fake_family/urls.py | 14 +++--- passerelle/contrib/solis_apa/urls.py | 18 ++++---- passerelle/contrib/toulouse_smart/urls.py | 6 +-- passerelle/plugins.py | 18 +++++--- passerelle/sms/models.py | 5 +-- passerelle/sms/urls.py | 4 +- passerelle/urls.py | 52 +++++++++++------------ passerelle/views.py | 7 ++- 21 files changed, 136 insertions(+), 122 deletions(-) diff --git a/passerelle/api/urls.py b/passerelle/api/urls.py index 2f51c600..e2838559 100644 --- a/passerelle/api/urls.py +++ b/passerelle/api/urls.py @@ -14,11 +14,11 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import path, re_path from .views import JobDetailView, StatisticsListView urlpatterns = [ - url(r'jobs/(?P[\w,-]+)/$', JobDetailView.as_view(), name='api-job'), - url(r'statistics/$', StatisticsListView.as_view(), name='api-statistics-list'), + re_path(r'jobs/(?P[\w,-]+)/$', JobDetailView.as_view(), name='api-job'), + path('statistics/', StatisticsListView.as_view(), name='api-statistics-list'), ] diff --git a/passerelle/apps/arcgis/urls.py b/passerelle/apps/arcgis/urls.py index fc9c0e50..55062041 100644 --- a/passerelle/apps/arcgis/urls.py +++ b/passerelle/apps/arcgis/urls.py @@ -14,14 +14,14 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from . import views management_urlpatterns = [ - url(r'^(?P[\w,-]+)/query/new/$', views.QueryNew.as_view(), name='arcgis-query-new'), - url(r'^(?P[\w,-]+)/query/(?P\d+)/$', views.QueryEdit.as_view(), name='arcgis-query-edit'), - url( + re_path(r'^(?P[\w,-]+)/query/new/$', views.QueryNew.as_view(), name='arcgis-query-new'), + re_path(r'^(?P[\w,-]+)/query/(?P\d+)/$', views.QueryEdit.as_view(), name='arcgis-query-edit'), + re_path( r'^(?P[\w,-]+)/query/(?P\d+)/delete/$', views.QueryDelete.as_view(), name='arcgis-query-delete', diff --git a/passerelle/apps/bdp/urls.py b/passerelle/apps/bdp/urls.py index 69e9f354..a99e8ba5 100644 --- a/passerelle/apps/bdp/urls.py +++ b/passerelle/apps/bdp/urls.py @@ -1,12 +1,12 @@ -from django.conf.urls import url +from django.urls import re_path from django.views.decorators.csrf import csrf_exempt from .views import BdpDetailView, PostAdherentView, ResourcesView urlpatterns = [ - url(r'^(?P[\w,-]+)/$', BdpDetailView.as_view(), name='bdp-view'), - url(r'^(?P[\w,-]+)/(?P[\w,-]+)/$', ResourcesView.as_view(), name='bdp-resources'), - url( + re_path(r'^(?P[\w,-]+)/$', BdpDetailView.as_view(), name='bdp-view'), + re_path(r'^(?P[\w,-]+)/(?P[\w,-]+)/$', ResourcesView.as_view(), name='bdp-resources'), + re_path( r'^(?P[\w,-]+)/post/adherent/$', csrf_exempt(PostAdherentView.as_view()), name='bdp-post-adherent', diff --git a/passerelle/apps/clicrdv/urls.py b/passerelle/apps/clicrdv/urls.py index d8fdfa98..1b3baf7a 100644 --- a/passerelle/apps/clicrdv/urls.py +++ b/passerelle/apps/clicrdv/urls.py @@ -1,36 +1,36 @@ -from django.conf.urls import url +from django.urls import re_path from django.views.decorators.csrf import csrf_exempt from passerelle.apps.clicrdv import views urlpatterns = [ - url(r'^(?P[\w,-]+)/$', views.ClicRdvDetailView.as_view(), name='clicrdv-view'), - url( + re_path(r'^(?P[\w,-]+)/$', views.ClicRdvDetailView.as_view(), name='clicrdv-view'), + re_path( r'^(?P[\w,-]+)/interventions/(?P\d+)/datetimes/$', views.DateTimesView.as_view(), name='clicrdv-datetimes', ), - url( + re_path( r'^(?P[\w,-]+)/interventions/(?P\d+)/dates/$', views.DatesView.as_view(), name='clicrdv-dates', ), - url( + re_path( r'^(?P[\w,-]+)/interventions/(?P\d+)/(?P[\d-]+)/times$', views.TimesView.as_view(), name='clicrdv-times', ), - url( + re_path( r'^(?P[\w,-]+)/interventions/(?P\d+)/create$', csrf_exempt(views.CreateAppointmentView.as_view()), name='clicrdv-create-appointment', ), - url( + re_path( r'^(?P[\w,-]+)/create$', csrf_exempt(views.CreateAppointmentView.as_view()), name='clicrdv-create-appointment-qs', ), - url( + re_path( r'^(?P[\w,-]+)/(?P\d+)/cancel$', views.CancelAppointmentView.as_view(), name='clicrdv-cancel-appointment', diff --git a/passerelle/apps/cmis/urls.py b/passerelle/apps/cmis/urls.py index 15a1d6a2..953080d7 100644 --- a/passerelle/apps/cmis/urls.py +++ b/passerelle/apps/cmis/urls.py @@ -14,10 +14,10 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from .views import CmisTypeView management_urlpatterns = [ - url(r'^(?P[\w,-]+)/type/$', CmisTypeView.as_view(), name='cmis-type'), + re_path(r'^(?P[\w,-]+)/type/$', CmisTypeView.as_view(), name='cmis-type'), ] diff --git a/passerelle/apps/csvdatasource/urls.py b/passerelle/apps/csvdatasource/urls.py index e550d9cc..820a41ac 100644 --- a/passerelle/apps/csvdatasource/urls.py +++ b/passerelle/apps/csvdatasource/urls.py @@ -14,19 +14,21 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from passerelle.apps.csvdatasource import views management_urlpatterns = [ - url(r'^(?P[\w,-]+)/download/$', views.CsvDownload.as_view(), name='csv-download'), - url(r'^(?P[\w,-]+)/queries/new/$', views.NewQueryView.as_view(), name='csv-new-query'), - url( + re_path(r'^(?P[\w,-]+)/download/$', views.CsvDownload.as_view(), name='csv-download'), + re_path( + r'^(?P[\w,-]+)/queries/new/$', views.NewQueryView.as_view(), name='csv-new-query' + ), + re_path( r'^(?P[\w,-]+)/queries/(?P[\w,-]+)/$', views.UpdateQueryView.as_view(), name='csv-edit-query', ), - url( + re_path( r'^(?P[\w,-]+)/queries/(?P[\w,-]+)/delete$', views.DeleteQueryView.as_view(), name='csv-delete-query', diff --git a/passerelle/apps/gdc/urls.py b/passerelle/apps/gdc/urls.py index d4985df9..0ba1ad10 100644 --- a/passerelle/apps/gdc/urls.py +++ b/passerelle/apps/gdc/urls.py @@ -14,14 +14,14 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from django.views.decorators.csrf import csrf_exempt from .views import GdcDetailView, PostDemandeView, StatusView, VoiesView urlpatterns = [ - url(r'^(?P[\w,-]+)/$', GdcDetailView.as_view(), name='gdc-view'), - url(r'^(?P[\w,-]+)/voies/(?P\d+)$', VoiesView.as_view(), name='gdc-voies'), - url(r'^(?P[\w,-]+)/post/demande$', csrf_exempt(PostDemandeView.as_view()), name='gdc-post'), - url(r'^(?P[\w,-]+)/status/(?P\d+)', StatusView.as_view(), name='gdc-status'), + re_path(r'^(?P[\w,-]+)/$', GdcDetailView.as_view(), name='gdc-view'), + re_path(r'^(?P[\w,-]+)/voies/(?P\d+)$', VoiesView.as_view(), name='gdc-voies'), + re_path(r'^(?P[\w,-]+)/post/demande$', csrf_exempt(PostDemandeView.as_view()), name='gdc-post'), + re_path(r'^(?P[\w,-]+)/status/(?P\d+)', StatusView.as_view(), name='gdc-status'), ] diff --git a/passerelle/apps/opendatasoft/urls.py b/passerelle/apps/opendatasoft/urls.py index cb66560a..67b07f41 100644 --- a/passerelle/apps/opendatasoft/urls.py +++ b/passerelle/apps/opendatasoft/urls.py @@ -14,14 +14,16 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from . import views management_urlpatterns = [ - url(r'^(?P[\w,-]+)/query/new/$', views.QueryNew.as_view(), name='opendatasoft-query-new'), - url(r'^(?P[\w,-]+)/query/(?P\d+)/$', views.QueryEdit.as_view(), name='opendatasoft-query-edit'), - url( + re_path(r'^(?P[\w,-]+)/query/new/$', views.QueryNew.as_view(), name='opendatasoft-query-new'), + re_path( + r'^(?P[\w,-]+)/query/(?P\d+)/$', views.QueryEdit.as_view(), name='opendatasoft-query-edit' + ), + re_path( r'^(?P[\w,-]+)/query/(?P\d+)/delete/$', views.QueryDelete.as_view(), name='opendatasoft-query-delete', diff --git a/passerelle/apps/opengis/urls.py b/passerelle/apps/opengis/urls.py index e77eed62..09e5174b 100644 --- a/passerelle/apps/opengis/urls.py +++ b/passerelle/apps/opengis/urls.py @@ -14,19 +14,19 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from . import views management_urlpatterns = [ - url(r'^(?P[\w,-]+)/query/new/$', views.QueryNew.as_view(), name='opengis-query-new'), - url(r'^(?P[\w,-]+)/query/(?P\d+)/$', views.QueryEdit.as_view(), name='opengis-query-edit'), - url( + re_path(r'^(?P[\w,-]+)/query/new/$', views.QueryNew.as_view(), name='opengis-query-new'), + re_path(r'^(?P[\w,-]+)/query/(?P\d+)/$', views.QueryEdit.as_view(), name='opengis-query-edit'), + re_path( r'^(?P[\w,-]+)/query/(?P\d+)/delete/$', views.QueryDelete.as_view(), name='opengis-query-delete', ), - url( + re_path( r'^(?P[\w,-]+)/query/(?P\d+)/test-indexing-template/$', views.TestIndexingTemplate.as_view(), name='opengis-query-test-indexing-template', diff --git a/passerelle/apps/ovh/urls.py b/passerelle/apps/ovh/urls.py index b4ebb954..7e5fdab6 100644 --- a/passerelle/apps/ovh/urls.py +++ b/passerelle/apps/ovh/urls.py @@ -1,10 +1,12 @@ -from django.conf.urls import url +from django.urls import re_path from . import views management_urlpatterns = [ - url(r'^(?P[\w,-]+)/request_token/$', views.RequestTokenView.as_view(), name='ovh-request-token'), - url( + re_path( + r'^(?P[\w,-]+)/request_token/$', views.RequestTokenView.as_view(), name='ovh-request-token' + ), + re_path( r'^(?P[\w,-]+)/confirm_token/(?P[a-z0-9-]+)/$', views.ConfirmTokenView.as_view(), name='ovh-confirm-token', diff --git a/passerelle/apps/plone_restapi/urls.py b/passerelle/apps/plone_restapi/urls.py index 23967c68..d92f85f0 100644 --- a/passerelle/apps/plone_restapi/urls.py +++ b/passerelle/apps/plone_restapi/urls.py @@ -14,16 +14,16 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from . import views management_urlpatterns = [ - url(r'^(?P[\w,-]+)/query/new/$', views.QueryNew.as_view(), name='plone-restapi-query-new'), - url( + re_path(r'^(?P[\w,-]+)/query/new/$', views.QueryNew.as_view(), name='plone-restapi-query-new'), + re_path( r'^(?P[\w,-]+)/query/(?P\d+)/$', views.QueryEdit.as_view(), name='plone-restapi-query-edit' ), - url( + re_path( r'^(?P[\w,-]+)/query/(?P\d+)/delete/$', views.QueryDelete.as_view(), name='plone-restapi-query-delete', diff --git a/passerelle/apps/sp_fr/urls.py b/passerelle/apps/sp_fr/urls.py index f59fdc58..91aa587e 100644 --- a/passerelle/apps/sp_fr/urls.py +++ b/passerelle/apps/sp_fr/urls.py @@ -14,17 +14,19 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from . import views management_urlpatterns = [ - url(r'^(?P[\w,-]+)/mapping/new/$', views.MappingNew.as_view(), name='sp-fr-mapping-new'), - url(r'^(?P[\w,-]+)/mapping/(?P\d+)/$', views.MappingEdit.as_view(), name='sp-fr-mapping-edit'), - url( + re_path(r'^(?P[\w,-]+)/mapping/new/$', views.MappingNew.as_view(), name='sp-fr-mapping-new'), + re_path( + r'^(?P[\w,-]+)/mapping/(?P\d+)/$', views.MappingEdit.as_view(), name='sp-fr-mapping-edit' + ), + re_path( r'^(?P[\w,-]+)/mapping/(?P\d+)/delete/$', views.MappingDelete.as_view(), name='sp-fr-mapping-delete', ), - url(r'^(?P[\w,-]+)/run/$', views.run, name='sp-fr-run'), + re_path(r'^(?P[\w,-]+)/run/$', views.run, name='sp-fr-run'), ] diff --git a/passerelle/base/urls.py b/passerelle/base/urls.py index eb76199d..bf4b7f9d 100644 --- a/passerelle/base/urls.py +++ b/passerelle/base/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import url +from django.urls import path, re_path from .views import ( AccessRightCreateView, @@ -14,22 +14,22 @@ from .views import ( ) access_urlpatterns = [ - url(r'^$', ApiUserListView.as_view(), name='apiuser-list'), - url(r'^add$', ApiUserCreateView.as_view(), name='apiuser-add'), - url(r'^(?P[\w,-]+)/edit$', ApiUserUpdateView.as_view(), name='apiuser-edit'), - url(r'^(?P[\w,-]+)/delete$', ApiUserDeleteView.as_view(), name='apiuser-delete'), - url(r'^(?P[\w,-]+)/remove$', AccessRightDeleteView.as_view(), name='access-right-remove'), - url( + path('', ApiUserListView.as_view(), name='apiuser-list'), + path('add', ApiUserCreateView.as_view(), name='apiuser-add'), + re_path(r'^(?P[\w,-]+)/edit$', ApiUserUpdateView.as_view(), name='apiuser-edit'), + re_path(r'^(?P[\w,-]+)/delete$', ApiUserDeleteView.as_view(), name='apiuser-delete'), + re_path(r'^(?P[\w,-]+)/remove$', AccessRightDeleteView.as_view(), name='access-right-remove'), + re_path( r'^accessright/add/(?P[\w,-]+)/(?P[\w,-]+)/(?P[\w,-]+)/', AccessRightCreateView.as_view(), name='access-right-add', ), - url( + re_path( r'logging/parameters/(?P[\w,-]+)/(?P[\w,-]+)/$', LoggingParametersUpdateView.as_view(), name='logging-parameters', ), - url( + re_path( r'manage/availability/(?P[\w,-]+)/(?P[\w,-]+)/$', ManageAvailabilityView.as_view(), name='manage-availability', @@ -37,6 +37,6 @@ access_urlpatterns = [ ] import_export_urlpatterns = [ - url(r'^import$', ImportSiteView.as_view(), name='import-site'), - url(r'^export$', ExportSiteView.as_view(), name='export-site'), + path('import', ImportSiteView.as_view(), name='import-site'), + path('export', ExportSiteView.as_view(), name='export-site'), ] diff --git a/passerelle/contrib/fake_family/urls.py b/passerelle/contrib/fake_family/urls.py index d74a4398..91f78d69 100644 --- a/passerelle/contrib/fake_family/urls.py +++ b/passerelle/contrib/fake_family/urls.py @@ -14,17 +14,17 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from passerelle.contrib.fake_family import views urlpatterns = [ - url(r'^(?P[\w,-]+)/$', views.FakeFamilyDetailView.as_view(), name='fake-family-view'), - url(r'^(?P[\w,-]+)/dump/$', views.DumpView.as_view(), name='fake-family-dump'), - url(r'^(?P[\w,-]+)/family/link/$', views.LinkView.as_view(), name='fake-family-link'), - url(r'^(?P[\w,-]+)/family/unlink/$', views.UnlinkView.as_view(), name='fake-family-unlink'), - url(r'^(?P[\w,-]+)/family/$', views.FamilyView.as_view(), name='fake-family-info'), - url( + re_path(r'^(?P[\w,-]+)/$', views.FakeFamilyDetailView.as_view(), name='fake-family-view'), + re_path(r'^(?P[\w,-]+)/dump/$', views.DumpView.as_view(), name='fake-family-dump'), + re_path(r'^(?P[\w,-]+)/family/link/$', views.LinkView.as_view(), name='fake-family-link'), + re_path(r'^(?P[\w,-]+)/family/unlink/$', views.UnlinkView.as_view(), name='fake-family-unlink'), + re_path(r'^(?P[\w,-]+)/family/$', views.FamilyView.as_view(), name='fake-family-info'), + re_path( r'^(?P[\w,-]+)/family/(?P[\w,-]+)/$', views.FamilyKeyView.as_view(), name='fake-family-key' ), ] diff --git a/passerelle/contrib/solis_apa/urls.py b/passerelle/contrib/solis_apa/urls.py index a08902ca..23fee797 100644 --- a/passerelle/contrib/solis_apa/urls.py +++ b/passerelle/contrib/solis_apa/urls.py @@ -14,24 +14,26 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from passerelle.contrib.solis_apa import views urlpatterns = [ - url(r'^(?P[\w,-]+)/$', views.SolisAPADetailView.as_view(), name='solis-apa-view'), - url(r'^(?P[\w,-]+)/communes/$', views.CommunesView.as_view(), name='solis-apa-communes'), - url(r'^(?P[\w,-]+)/lieux/$', views.LieuxView.as_view(), name='solis-apa-lieux'), - url(r'^(?P[\w,-]+)/homonymes/$', views.HomonymesView.as_view(), name='solis-apa-homonymes'), - url( + re_path(r'^(?P[\w,-]+)/$', views.SolisAPADetailView.as_view(), name='solis-apa-view'), + re_path(r'^(?P[\w,-]+)/communes/$', views.CommunesView.as_view(), name='solis-apa-communes'), + re_path(r'^(?P[\w,-]+)/lieux/$', views.LieuxView.as_view(), name='solis-apa-lieux'), + re_path(r'^(?P[\w,-]+)/homonymes/$', views.HomonymesView.as_view(), name='solis-apa-homonymes'), + re_path( r'^(?P[\w,-]+)/referential/(?P[\w,-]+)/$', views.ReferentialView.as_view(), name='solis-apa-referential', ), - url( + re_path( r'^(?P[\w,-]+)/suivi/(?P[\w,-]+)/$', views.SuiviView.as_view(), name='solis-apa-suivi', ), - url(r'^(?P[\w,-]+)/integration/$', views.IntegrationView.as_view(), name='solis-apa-integration'), + re_path( + r'^(?P[\w,-]+)/integration/$', views.IntegrationView.as_view(), name='solis-apa-integration' + ), ] diff --git a/passerelle/contrib/toulouse_smart/urls.py b/passerelle/contrib/toulouse_smart/urls.py index 09fe5995..6dfb4a8a 100644 --- a/passerelle/contrib/toulouse_smart/urls.py +++ b/passerelle/contrib/toulouse_smart/urls.py @@ -14,17 +14,17 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.conf.urls import url +from django.urls import re_path from .views import TypeIntervention, TypeInterventionAsBlocks management_urlpatterns = [ - url( + re_path( r'^(?P[\w,-]+)/type-intervention/as-blocks/$', TypeInterventionAsBlocks.as_view(), name='toulouse-smart-type-intervention-as-blocks', ), - url( + re_path( r'^(?P[\w,-]+)/type-intervention/$', TypeIntervention.as_view(), name='toulouse-smart-type-intervention', diff --git a/passerelle/plugins.py b/passerelle/plugins.py index 4dbd0f22..eeea2d9b 100644 --- a/passerelle/plugins.py +++ b/passerelle/plugins.py @@ -15,7 +15,7 @@ # along with this program. If not, see . from django.apps import apps -from django.conf.urls import include, url +from django.urls import include, re_path from .urls_utils import app_enabled, manager_required, required, trust_required @@ -36,30 +36,36 @@ def register_apps_urls(urlpatterns): if hasattr(obj, 'get_before_urls'): urls = obj.get_before_urls() if urls: - before_urls.append(url('^', include(urls))) + before_urls.append(re_path('^', include(urls))) if hasattr(obj, 'get_after_urls'): urls = obj.get_after_urls() if urls: - after_urls.append(url('^', include(urls))) + after_urls.append(re_path('^', include(urls))) elif hasattr(obj, 'get_urls'): url_prefix = '^%s/' % connector_slug urls = obj.get_urls() if urls: urls = required(app_enabled(app.label), urls) - after_urls.append(url(url_prefix, include(urls), kwargs={'connector': connector_slug})) + after_urls.append( + re_path(url_prefix, include(urls), kwargs={'connector': connector_slug}) + ) if hasattr(obj, 'get_management_urls'): url_prefix = '^manage/%s/' % connector_slug urls = obj.get_management_urls() if urls: urls = required(app_enabled(app.label), urls) urls = required(manager_required, urls) - after_urls.append(url(url_prefix, include(urls), kwargs={'connector': connector_slug})) + after_urls.append( + re_path(url_prefix, include(urls), kwargs={'connector': connector_slug}) + ) if hasattr(obj, 'get_statistics_urls'): url_prefix = '^api/%s/' % connector_slug urls = obj.get_statistics_urls() if urls: urls = required(app_enabled(app.label), urls) urls = required(trust_required, urls) - after_urls.append(url(url_prefix, include(urls), kwargs={'connector': connector_slug})) + after_urls.append( + re_path(url_prefix, include(urls), kwargs={'connector': connector_slug}) + ) return before_urls + urlpatterns + after_urls diff --git a/passerelle/sms/models.py b/passerelle/sms/models.py index 41040756..b6e72ee8 100644 --- a/passerelle/sms/models.py +++ b/passerelle/sms/models.py @@ -16,11 +16,10 @@ import logging import re -from django.conf.urls import url from django.contrib.postgres.fields import ArrayField from django.core.validators import RegexValidator from django.db import models -from django.urls import reverse +from django.urls import re_path, reverse from django.utils.module_loading import import_string from django.utils.translation import gettext_lazy as _ @@ -113,7 +112,7 @@ class SMSResource(BaseResource): from .views import SmsStatisticsView statistics_urlpatterns = [ - url( + re_path( r'^(?P[\w,-]+)/sms-count/$', SmsStatisticsView.as_view(), name='api-statistics-sms-%s' % cls.get_connector_slug(), diff --git a/passerelle/sms/urls.py b/passerelle/sms/urls.py index 8d568511..0f03c779 100644 --- a/passerelle/sms/urls.py +++ b/passerelle/sms/urls.py @@ -1,7 +1,7 @@ -from django.conf.urls import url +from django.urls import re_path from . import views management_urlpatterns = [ - url(r'^(?P[\w,-]+)/test-send/$', views.SmsTestSendView.as_view(), name='sms-test-send'), + re_path(r'^(?P[\w,-]+)/test-send/$', views.SmsTestSendView.as_view(), name='sms-test-send'), ] diff --git a/passerelle/urls.py b/passerelle/urls.py index 4fe11fc1..b99db343 100644 --- a/passerelle/urls.py +++ b/passerelle/urls.py @@ -1,8 +1,8 @@ from django.conf import settings -from django.conf.urls import include, url from django.contrib import admin from django.contrib.auth.decorators import login_required from django.contrib.staticfiles.urls import staticfiles_urlpatterns +from django.urls import include, path, re_path from django.views.static import serve as static_serve from .api.urls import urlpatterns as api_urls @@ -30,21 +30,21 @@ from .views import ( admin.autodiscover() urlpatterns = [ - url(r'^$', HomePageView.as_view(), name='homepage'), - url(r'^manage/$', manager_required(ManageView.as_view()), name='manage-home'), - url(r'^manage/menu.json$', manager_required(menu_json), name='menu-json'), - url(r'^manage/add$', manager_required(ManageAddView.as_view()), name='add-connector'), - url( + path('', HomePageView.as_view(), name='homepage'), + path('manage/', manager_required(ManageView.as_view()), name='manage-home'), + re_path(r'^manage/menu.json$', manager_required(menu_json), name='menu-json'), + path('manage/add', manager_required(ManageAddView.as_view()), name='add-connector'), + re_path( r'^media/(?P.*)$', login_required(static_serve), { 'document_root': settings.MEDIA_ROOT, }, ), - url(r'^admin/', admin.site.urls), - url(r'^manage/access/', decorated_includes(manager_required, include(access_urlpatterns))), - url(r'^manage/', decorated_includes(manager_required, include(import_export_urlpatterns))), - url('^api/', include(api_urls)), + re_path(r'^admin/', admin.site.urls), + re_path(r'^manage/access/', decorated_includes(manager_required, include(access_urlpatterns))), + re_path(r'^manage/', decorated_includes(manager_required, include(import_export_urlpatterns))), + re_path('^api/', include(api_urls)), ] # add patterns from apps @@ -52,13 +52,13 @@ urlpatterns = register_apps_urls(urlpatterns) # add authentication patterns urlpatterns += [ - url(r'^logout/$', logout, name='auth_logout'), - url(r'^login/$', login, name='auth_login'), + path('logout/', logout, name='auth_logout'), + path('login/', login, name='auth_login'), ] if 'mellon' in settings.INSTALLED_APPS: urlpatterns += [ - url( + re_path( r'^accounts/mellon/', include('mellon.urls'), kwargs={ @@ -69,47 +69,47 @@ if 'mellon' in settings.INSTALLED_APPS: urlpatterns += [ - url( + re_path( r'^manage/(?P[\w,-]+)/', decorated_includes( manager_required, include( [ - url(r'^add$', GenericCreateConnectorView.as_view(), name='create-connector'), - url( + path('add', GenericCreateConnectorView.as_view(), name='create-connector'), + re_path( r'^(?P[\w,-]+)/delete$', GenericDeleteConnectorView.as_view(), name='delete-connector', ), - url( + re_path( r'^(?P[\w,-]+)/edit$', GenericEditConnectorView.as_view(), name='edit-connector' ), - url( + re_path( r'^(?P[\w,-]+)/logs/$', GenericViewLogsConnectorView.as_view(), name='view-logs-connector', ), - url( + re_path( r'^(?P[\w,-]+)/logs/(?P\d+)/$', GenericLogView.as_view(), name='view-log', ), - url( + re_path( r'^(?P[\w,-]+)/jobs/$', GenericViewJobsConnectorView.as_view(), name='view-jobs-connector', ), - url( + re_path( r'^(?P[\w,-]+)/jobs/(?P\d+)/$', GenericJobView.as_view(), name='view-job', ), - url( + re_path( r'^(?P[\w,-]+)/jobs/(?P\d+)/restart/$', GenericRestartJobView.as_view(), name='restart-job', ), - url( + re_path( r'^(?P[\w,-]+)/export$', GenericExportConnectorView.as_view(), name='export-connector', @@ -121,10 +121,10 @@ urlpatterns += [ ] urlpatterns += [ - url( + re_path( r'^(?P[\w,-]+)/(?P[\w,-]+)/$', GenericConnectorView.as_view(), name='view-connector' ), - url( + re_path( r'^(?P[\w,-]+)/(?P[\w,-]+)/(?P[\w,-.]+)(?:/(?P.*))?$', GenericEndpointView.as_view(), name='generic-endpoint', @@ -135,7 +135,7 @@ if settings.DEBUG and 'debug_toolbar' in settings.INSTALLED_APPS: import debug_toolbar # pylint: disable=import-error urlpatterns = [ - url(r'^__debug__/', include(debug_toolbar.urls)), + re_path(r'^__debug__/', include(debug_toolbar.urls)), ] + urlpatterns urlpatterns += staticfiles_urlpatterns() diff --git a/passerelle/views.py b/passerelle/views.py index f8f551f1..5ebb24f2 100644 --- a/passerelle/views.py +++ b/passerelle/views.py @@ -25,7 +25,6 @@ from urllib.parse import quote from dateutil import parser as date_parser from django.apps import apps from django.conf import settings -from django.conf.urls import url from django.contrib.auth import logout as auth_logout from django.contrib.auth import views as auth_views from django.core.cache import cache @@ -34,7 +33,7 @@ from django.db import transaction from django.db.models import Q from django.http import Http404, HttpResponse, HttpResponseRedirect from django.shortcuts import get_object_or_404, resolve_url -from django.urls import reverse +from django.urls import re_path, reverse from django.utils.encoding import force_bytes, force_str from django.utils.timezone import is_naive, make_aware from django.utils.translation import gettext_lazy as _ @@ -431,7 +430,7 @@ class GenericEndpointView(GenericConnectorMixin, SingleObjectMixin, View): if not method.endpoint_info.name == kwargs.get('endpoint'): continue if method.endpoint_info.pattern: - pattern = url(method.endpoint_info.pattern, method) + pattern = re_path(method.endpoint_info.pattern, method) match = pattern.resolve(kwargs.get('rest') or '') if match: self.endpoint = method @@ -584,7 +583,7 @@ class GenericEndpointView(GenericConnectorMixin, SingleObjectMixin, View): def get(self, request, *args, **kwargs): if self.endpoint.endpoint_info.pattern: - pattern = url(self.endpoint.endpoint_info.pattern, self.endpoint) + pattern = re_path(self.endpoint.endpoint_info.pattern, self.endpoint) match = pattern.resolve(kwargs.get('rest') or '') if not match: raise Http404() -- 2.37.2