Projet

Général

Profil

0003-replaced-urls.url-with-url.re_path-equivalent-68183.patch

A. Berriot, 16 août 2022 14:44

Télécharger (36,4 ko)

Voir les différences:

Subject: [PATCH 3/4] replaced urls.url with url.re_path equivalent (#68183)

 combo/apps/assets/urls.py        | 28 +++++------
 combo/apps/calendar/urls.py      |  6 +--
 combo/apps/dashboard/urls.py     | 12 ++---
 combo/apps/dataviz/urls.py       |  6 +--
 combo/apps/gallery/urls.py       | 10 ++--
 combo/apps/lingo/urls.py         | 68 ++++++++++++++------------
 combo/apps/maps/urls.py          | 22 ++++-----
 combo/apps/notifications/urls.py | 12 +++--
 combo/apps/publik/urls.py        |  4 +-
 combo/apps/pwa/urls.py           | 24 ++++-----
 combo/apps/search/urls.py        | 14 +++---
 combo/apps/wcs/urls.py           |  8 +--
 combo/manager/urls.py            | 84 ++++++++++++++++----------------
 combo/plugins.py                 | 10 ++--
 combo/public/urls.py             | 14 +++---
 combo/urls.py                    | 20 ++++----
 16 files changed, 175 insertions(+), 167 deletions(-)
combo/apps/assets/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import include, url
17
from django.conf.urls import include, re_path
18 18

  
19 19
from combo.urls_utils import decorated_includes, staff_required
20 20

  
21 21
from . import api_views, views
22 22

  
23 23
assets_manager_urls = [
24
    url(r'^$', views.assets, name='combo-manager-assets'),
25
    url(r'^slots/(?P<cell_reference>[\w_-]+)/$', views.slot_assets, name='combo-manager-slot-assets'),
26
    url(r'^delete$', views.asset_delete, name='combo-manager-asset-delete'),
27
    url(r'^overwrite/$', views.asset_overwrite, name='combo-manager-asset-overwrite'),
28
    url(r'^upload/$', views.asset_upload, name='combo-manager-asset-upload'),
29
    url(r'^upload/(?P<key>[\w_:-]+)/$', views.slot_asset_upload, name='combo-manager-slot-asset-upload'),
30
    url(r'^delete/(?P<key>[\w_:-]+)/$', views.slot_asset_delete, name='combo-manager-slot-asset-delete'),
31
    url(r'^export/$', views.assets_export, name='combo-manager-assets-export'),
32
    url(r'^import/$', views.assets_import, name='combo-manager-assets-import'),
24
    re_path(r'^$', views.assets, name='combo-manager-assets'),
25
    re_path(r'^slots/(?P<cell_reference>[\w_-]+)/$', views.slot_assets, name='combo-manager-slot-assets'),
26
    re_path(r'^delete$', views.asset_delete, name='combo-manager-asset-delete'),
27
    re_path(r'^overwrite/$', views.asset_overwrite, name='combo-manager-asset-overwrite'),
28
    re_path(r'^upload/$', views.asset_upload, name='combo-manager-asset-upload'),
29
    re_path(r'^upload/(?P<key>[\w_:-]+)/$', views.slot_asset_upload, name='combo-manager-slot-asset-upload'),
30
    re_path(r'^delete/(?P<key>[\w_:-]+)/$', views.slot_asset_delete, name='combo-manager-slot-asset-delete'),
31
    re_path(r'^export/$', views.assets_export, name='combo-manager-assets-export'),
32
    re_path(r'^import/$', views.assets_import, name='combo-manager-assets-import'),
33 33
]
34 34

  
35 35
urlpatterns = [
36
    url(r'^assets/(?P<key>[\w_:-]+)$', views.serve_asset),
37
    url(r'^manage/assets/', decorated_includes(staff_required, include(assets_manager_urls))),
38
    url(r'^api/assets/set/(?P<key>[\w_:-]+)/$', api_views.view_set, name='api-assets-set'),
39
    url(r'^ajax/assets-export-size/$', views.assets_export_size, name='combo-manager-assets-export-size'),
36
    re_path(r'^assets/(?P<key>[\w_:-]+)$', views.serve_asset),
37
    re_path(r'^manage/assets/', decorated_includes(staff_required, include(assets_manager_urls))),
38
    re_path(r'^api/assets/set/(?P<key>[\w_:-]+)/$', api_views.view_set, name='api-assets-set'),
39
    re_path(r'^ajax/assets-export-size/$', views.assets_export_size, name='combo-manager-assets-export-size'),
40 40
]
combo/apps/calendar/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import url
17
from django.conf.urls import re_path
18 18

  
19 19
from .views import BookingView, CalendarContentAjaxView
20 20

  
21 21
urlpatterns = [
22
    url(r'^calendar/book/(?P<pk>[\w,-]+)/$', BookingView.as_view(), name='calendar-booking'),
23
    url(
22
    re_path(r'^calendar/book/(?P<pk>[\w,-]+)/$', BookingView.as_view(), name='calendar-booking'),
23
    re_path(
24 24
        r'^ajax/calendar/content/(?P<pk>\w+)/$',
25 25
        CalendarContentAjaxView.as_view(),
26 26
        name='ajax-calendar-content',
combo/apps/dashboard/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import url
17
from django.conf.urls import re_path
18 18

  
19 19
from . import views
20 20

  
21 21
urlpatterns = [
22
    url(
22
    re_path(
23 23
        r'^api/dashboard/add/(?P<cell_reference>[\w_-]+)/$',
24 24
        views.dashboard_add_tile,
25 25
        name='combo-dashboard-add-tile',
26 26
    ),
27
    url(
27
    re_path(
28 28
        r'^api/dashboard/remove/(?P<cell_reference>[\w_-]+)/$',
29 29
        views.dashboard_remove_tile,
30 30
        name='combo-dashboard-remove-tile',
31 31
    ),
32
    url(
32
    re_path(
33 33
        r'^api/dashboard/auto-tile/(?P<key>[\w_-]+)/$',
34 34
        views.dashboard_auto_tile,
35 35
        name='combo-dashboard-auto-tile',
36 36
    ),
37
    url(
37
    re_path(
38 38
        r'^api/dashboard/reorder/(?P<dashboard_id>[\w]+)/$',
39 39
        views.dashboard_reorder_tiles,
40 40
        name='combo-dashboard-reorder-tiles',
41 41
    ),
42
    url(
42
    re_path(
43 43
        r'^api/dashboard/tile-stats/$',
44 44
        views.dashboard_tile_stats,
45 45
        name='combo-dashboard-tile-stats',
combo/apps/dataviz/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import url
17
from django.conf.urls import re_path
18 18

  
19 19
from .views import ajax_gauge_count, dataviz_graph
20 20

  
21 21
urlpatterns = [
22
    url(r'^ajax/gauge-count/(?P<cell>[\w_-]+)/$', ajax_gauge_count, name='combo-ajax-gauge-count'),
23
    url(r'^api/dataviz/graph/(?P<cell>[\w_-]+)/$', dataviz_graph, name='combo-dataviz-graph'),
22
    re_path(r'^ajax/gauge-count/(?P<cell>[\w_-]+)/$', ajax_gauge_count, name='combo-ajax-gauge-count'),
23
    re_path(r'^api/dataviz/graph/(?P<cell>[\w_-]+)/$', dataviz_graph, name='combo-dataviz-graph'),
24 24
]
combo/apps/gallery/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import url
17
from django.conf.urls import re_path
18 18

  
19 19
from . import views
20 20

  
21 21
gallery_manager_urls = [
22
    url(r'^gallery/(?P<gallery_pk>\w+)/images/add/$', views.image_add, name='combo-gallery-image-add'),
23
    url(r'^gallery/(?P<gallery_pk>\w+)/order$', views.image_order, name='combo-gallery-image-order'),
24
    url(
22
    re_path(r'^gallery/(?P<gallery_pk>\w+)/images/add/$', views.image_add, name='combo-gallery-image-add'),
23
    re_path(r'^gallery/(?P<gallery_pk>\w+)/order$', views.image_order, name='combo-gallery-image-order'),
24
    re_path(
25 25
        r'^gallery/(?P<gallery_pk>\w+)/images/(?P<pk>\w+)/edit$',
26 26
        views.image_edit,
27 27
        name='combo-gallery-image-edit',
28 28
    ),
29
    url(
29
    re_path(
30 30
        r'^gallery/(?P<gallery_pk>\w+)/images/(?P<pk>\w+)/delete$',
31 31
        views.image_delete,
32 32
        name='combo-gallery-image-delete',
combo/apps/lingo/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import include, url
17
from django.conf.urls import include, re_path
18 18

  
19 19
from combo.urls_utils import decorated_includes, staff_required
20 20

  
......
51 51
)
52 52

  
53 53
lingo_manager_urls = [
54
    url('^$', TransactionListView.as_view(), name='lingo-manager-homepage'),
55
    url('^payments/error/$', BasketItemErrorListView.as_view(), name='lingo-manager-payment-error-list'),
56
    url(
54
    re_path('^$', TransactionListView.as_view(), name='lingo-manager-homepage'),
55
    re_path('^payments/error/$', BasketItemErrorListView.as_view(), name='lingo-manager-payment-error-list'),
56
    re_path(
57 57
        r'^item/(?P<item_id>\d+)/mark-as-notified/$',
58 58
        BasketItemMarkAsNotifiedView.as_view(),
59 59
        name='lingo-manager-basket-item-mark-as-notified',
60 60
    ),
61
    url(
61
    re_path(
62 62
        '^transactions/download-csv/$', download_transactions_csv, name='lingo-manager-transactions-download'
63 63
    ),
64
    url('^regies/$', RegieListView.as_view(), name='lingo-manager-regie-list'),
65
    url('^regies/add/$', RegieCreateView.as_view(), name='lingo-manager-regie-add'),
66
    url(r'^regies/(?P<pk>\w+)/edit$', RegieUpdateView.as_view(), name='lingo-manager-regie-edit'),
67
    url(r'^regies/(?P<pk>\w+)/delete$', RegieDeleteView.as_view(), name='lingo-manager-regie-delete'),
68
    url('^paymentbackends/$', PaymentBackendListView.as_view(), name='lingo-manager-paymentbackend-list'),
69
    url(
64
    re_path('^regies/$', RegieListView.as_view(), name='lingo-manager-regie-list'),
65
    re_path('^regies/add/$', RegieCreateView.as_view(), name='lingo-manager-regie-add'),
66
    re_path(r'^regies/(?P<pk>\w+)/edit$', RegieUpdateView.as_view(), name='lingo-manager-regie-edit'),
67
    re_path(r'^regies/(?P<pk>\w+)/delete$', RegieDeleteView.as_view(), name='lingo-manager-regie-delete'),
68
    re_path('^paymentbackends/$', PaymentBackendListView.as_view(), name='lingo-manager-paymentbackend-list'),
69
    re_path(
70 70
        '^paymentbackends/add/$', PaymentBackendCreateView.as_view(), name='lingo-manager-paymentbackend-add'
71 71
    ),
72
    url(
72
    re_path(
73 73
        r'^paymentbackends/(?P<pk>\w+)/edit$',
74 74
        PaymentBackendUpdateView.as_view(),
75 75
        name='lingo-manager-paymentbackend-edit',
76 76
    ),
77
    url(
77
    re_path(
78 78
        r'^paymentbackends/(?P<pk>\w+)/delete$',
79 79
        PaymentBackendDeleteView.as_view(),
80 80
        name='lingo-manager-paymentbackend-delete',
......
82 82
]
83 83

  
84 84
urlpatterns = [
85
    url('^api/lingo/regies$', RegiesApiView.as_view(), name='api-regies'),
86
    url('^api/lingo/add-basket-item$', AddBasketItemApiView.as_view(), name='api-add-basket-item'),
87
    url('^api/lingo/remove-basket-item$', RemoveBasketItemApiView.as_view(), name='api-remove-basket-item'),
88
    url(
85
    re_path('^api/lingo/regies$', RegiesApiView.as_view(), name='api-regies'),
86
    re_path('^api/lingo/add-basket-item$', AddBasketItemApiView.as_view(), name='api-add-basket-item'),
87
    re_path(
88
        '^api/lingo/remove-basket-item$', RemoveBasketItemApiView.as_view(), name='api-remove-basket-item'
89
    ),
90
    re_path(
89 91
        '^api/lingo/validate-transaction$',
90 92
        ValidateTransactionApiView.as_view(),
91 93
        name='api-validate-transaction',
92 94
    ),
93
    url('^api/lingo/cancel-transaction$', CancelTransactionApiView.as_view(), name='api-cancel-transaction'),
94
    url(
95
    re_path(
96
        '^api/lingo/cancel-transaction$', CancelTransactionApiView.as_view(), name='api-cancel-transaction'
97
    ),
98
    re_path(
95 99
        '^api/lingo/transaction-status/(?P<transaction_signature>.+)/$',
96 100
        TransactionStatusApiView.as_view(),
97 101
        name='api-transaction-status',
98 102
    ),
99
    url(r'^lingo/pay$', PayView.as_view(), name='lingo-pay'),
100
    url(r'^lingo/cancel/(?P<pk>\w+)/$', CancelItemView.as_view(), name='lingo-cancel-item'),
101
    url(r'^lingo/callback/(?P<regie_pk>\w+)/$', CallbackView.as_view(), name='lingo-callback'),
102
    url(
103
    re_path(r'^lingo/pay$', PayView.as_view(), name='lingo-pay'),
104
    re_path(r'^lingo/cancel/(?P<pk>\w+)/$', CancelItemView.as_view(), name='lingo-cancel-item'),
105
    re_path(r'^lingo/callback/(?P<regie_pk>\w+)/$', CallbackView.as_view(), name='lingo-callback'),
106
    re_path(
103 107
        r'^lingo/callback-payment-backend/(?P<payment_backend_pk>[A-Za-z0-9_-]+)/$',
104 108
        CallbackView.as_view(),
105 109
        name='lingo-callback-payment-backend',
106 110
    ),
107
    url(r'^lingo/return/(?P<regie_pk>\w+)/$', ReturnView.as_view(), name='lingo-return'),
108
    url(
111
    re_path(r'^lingo/return/(?P<regie_pk>\w+)/$', ReturnView.as_view(), name='lingo-return'),
112
    re_path(
109 113
        r'^lingo/return-payment-backend/(?P<payment_backend_pk>\w+)/(?P<transaction_signature>.+)/$',
110 114
        ReturnView.as_view(),
111 115
        name='lingo-return-payment-backend',
112 116
    ),
113
    url(r'^manage/lingo/', decorated_includes(staff_required, include(lingo_manager_urls))),
114
    url(
117
    re_path(r'^manage/lingo/', decorated_includes(staff_required, include(lingo_manager_urls))),
118
    re_path(
115 119
        r'^lingo/item/(?P<regie_id>[\w,-]+)/(?P<item_crypto_id>[\w,-]+)/pdf$',
116 120
        ItemDownloadView.as_view(),
117 121
        name='download-item-pdf',
118 122
    ),
119
    url(
123
    re_path(
120 124
        r'^lingo/item/(?P<regie_id>[\w,-]+)/(?P<item_crypto_id>[\w,-]+)/$',
121 125
        ItemView.as_view(),
122 126
        name='view-item',
123 127
    ),
124
    url(r'^lingo/item/(?P<item_signature>.+)/pay$', BasketItemPayView.as_view(), name='basket-item-pay-view'),
125
    url(r'^lingo/payment-status$', PaymentStatusView.as_view(), name='payment-status'),
126
    url(r'^lingo/self-invoice/(?P<cell_id>\w+)/$', SelfInvoiceView.as_view(), name='lingo-self-invoice'),
128
    re_path(
129
        r'^lingo/item/(?P<item_signature>.+)/pay$', BasketItemPayView.as_view(), name='basket-item-pay-view'
130
    ),
131
    re_path(r'^lingo/payment-status$', PaymentStatusView.as_view(), name='payment-status'),
132
    re_path(r'^lingo/self-invoice/(?P<cell_id>\w+)/$', SelfInvoiceView.as_view(), name='lingo-self-invoice'),
127 133
]
combo/apps/maps/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import include, url
17
from django.conf.urls import include, re_path
18 18

  
19 19
from combo.urls_utils import decorated_includes, staff_required
20 20

  
......
22 22
from .views import GeojsonView
23 23

  
24 24
maps_manager_urls = [
25
    url('^$', manager_views.ManagerHomeView.as_view(), name='maps-manager-homepage'),
26
    url(
25
    re_path('^$', manager_views.ManagerHomeView.as_view(), name='maps-manager-homepage'),
26
    re_path(
27 27
        '^layers/add/(?P<kind>geojson|tiles)/$',
28 28
        manager_views.LayerAddView.as_view(),
29 29
        name='maps-manager-layer-add',
30 30
    ),
31
    url(
31
    re_path(
32 32
        r'^layers/(?P<slug>[\w-]+)/edit/$',
33 33
        manager_views.LayerEditView.as_view(),
34 34
        name='maps-manager-layer-edit',
35 35
    ),
36
    url(
36
    re_path(
37 37
        r'^layers/(?P<slug>[\w-]+)/edit/request-parameters/$',
38 38
        manager_views.LayerEditRequestParametersView.as_view(),
39 39
        name='maps-manager-layer-edit-request-parameters',
40 40
    ),
41
    url(
41
    re_path(
42 42
        r'^layers/(?P<slug>[\w-]+)/delete/$',
43 43
        manager_views.LayerDeleteView.as_view(),
44 44
        name='maps-manager-layer-delete',
45 45
    ),
46
    url(
46
    re_path(
47 47
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/add-layer/(?P<kind>geojson|tiles)/$',
48 48
        manager_views.map_cell_add_layer,
49 49
        name='maps-manager-cell-add-layer',
50 50
    ),
51
    url(
51
    re_path(
52 52
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/layer/(?P<layeroptions_pk>\d+)/edit/$',
53 53
        manager_views.map_cell_edit_layer,
54 54
        name='maps-manager-cell-edit-layer',
55 55
    ),
56
    url(
56
    re_path(
57 57
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/layer/(?P<layeroptions_pk>\d+)/delete/$',
58 58
        manager_views.map_cell_delete_layer,
59 59
        name='maps-manager-cell-delete-layer',
......
61 61
]
62 62

  
63 63
urlpatterns = [
64
    url(r'^manage/maps/', decorated_includes(staff_required, include(maps_manager_urls))),
65
    url(
64
    re_path(r'^manage/maps/', decorated_includes(staff_required, include(maps_manager_urls))),
65
    re_path(
66 66
        r'^ajax/mapcell/geojson/(?P<cell_id>\d+)/(?P<layer_slug>[\w-]+)/$',
67 67
        GeojsonView.as_view(),
68 68
        name='mapcell-geojson',
combo/apps/notifications/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import url
17
from django.conf.urls import re_path
18 18

  
19 19
from .api_views import ack, add, count, forget
20 20

  
21 21
urlpatterns = [
22
    url('^api/notification/add/$', add, name='api-notification-add'),
23
    url(r'^api/notification/ack/(?P<notification_id>[\w:_-]+)/$', ack, name='api-notification-ack'),
24
    url(r'^api/notification/forget/(?P<notification_id>[\w:_-]+)/$', forget, name='api-notification-forget'),
25
    url('^api/notification/count/$', count, name='api-notification-count'),
22
    re_path('^api/notification/add/$', add, name='api-notification-add'),
23
    re_path(r'^api/notification/ack/(?P<notification_id>[\w:_-]+)/$', ack, name='api-notification-ack'),
24
    re_path(
25
        r'^api/notification/forget/(?P<notification_id>[\w:_-]+)/$', forget, name='api-notification-forget'
26
    ),
27
    re_path('^api/notification/count/$', count, name='api-notification-count'),
26 28
]
combo/apps/publik/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import url
17
from django.conf.urls import re_path
18 18

  
19 19
from .views import services_js
20 20

  
21
urlpatterns = [url(r'^__services.js$', services_js)]
21
urlpatterns = [re_path(r'^__services.js$', services_js)]
combo/apps/pwa/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import include, url
17
from django.conf.urls import include, re_path
18 18

  
19 19
from combo.urls_utils import decorated_includes, staff_required
20 20

  
......
34 34
)
35 35

  
36 36
pwa_manager_urls = [
37
    url('^$', ManagerHomeView.as_view(), name='pwa-manager-homepage'),
38
    url('^navigation/add/$', ManagerAddNavigationEntry.as_view(), name='pwa-manager-navigation-add'),
39
    url(
37
    re_path('^$', ManagerHomeView.as_view(), name='pwa-manager-homepage'),
38
    re_path('^navigation/add/$', ManagerAddNavigationEntry.as_view(), name='pwa-manager-navigation-add'),
39
    re_path(
40 40
        r'^navigation/edit/(?P<pk>\w+)/$',
41 41
        ManagerEditNavigationEntry.as_view(),
42 42
        name='pwa-manager-navigation-edit',
43 43
    ),
44
    url(
44
    re_path(
45 45
        r'^navigation/delete/(?P<pk>\w+)/$',
46 46
        ManagerDeleteNavigationEntry.as_view(),
47 47
        name='pwa-manager-navigation-delete',
48 48
    ),
49
    url('^navigation/order/$', manager_navigation_order, name='pwa-manager-navigation-order'),
49
    re_path('^navigation/order/$', manager_navigation_order, name='pwa-manager-navigation-order'),
50 50
]
51 51

  
52 52
urlpatterns = [
53
    url('^manifest.json$', manifest_json),
54
    url('^service-worker.js$', service_worker_js),
55
    url('^service-worker-registration.js$', service_worker_registration_js),
56
    url('^api/pwa/push/subscribe$', subscribe_push, name='pwa-subscribe-push'),
57
    url('^__pwa__/offline/$', offline_page),
58
    url(r'^manage/pwa/', decorated_includes(staff_required, include(pwa_manager_urls))),
53
    re_path('^manifest.json$', manifest_json),
54
    re_path('^service-worker.js$', service_worker_js),
55
    re_path('^service-worker-registration.js$', service_worker_registration_js),
56
    re_path('^api/pwa/push/subscribe$', subscribe_push, name='pwa-subscribe-push'),
57
    re_path('^__pwa__/offline/$', offline_page),
58
    re_path(r'^manage/pwa/', decorated_includes(staff_required, include(pwa_manager_urls))),
59 59
]
combo/apps/search/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import include, url
17
from django.conf.urls import include, re_path
18 18

  
19 19
from combo.urls_utils import decorated_includes, manager_required
20 20

  
......
22 22
from .models import SearchCell
23 23

  
24 24
search_manager_urls = [
25
    url(
25
    re_path(
26 26
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_]+-\d+)/engine/(?P<engine_slug>[\w_:-]+)/add/$',
27 27
        manager_views.page_search_cell_add_engine,
28 28
        name='combo-manager-page-search-cell-add-engine',
29 29
    ),
30
    url(
30
    re_path(
31 31
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_]+-\d+)/engine/(?P<engine_slug>[\w_:-]+)/edit/$',
32 32
        manager_views.page_search_cell_update_engine,
33 33
        name='combo-manager-page-search-cell-update-engine',
34 34
    ),
35
    url(
35
    re_path(
36 36
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_]+-\d+)/engine/(?P<engine_slug>[\w_:-]+)/delete/$',
37 37
        manager_views.page_search_cell_delete_engine,
38 38
        name='combo-manager-page-search-cell-delete-engine',
39 39
    ),
40
    url(
40
    re_path(
41 41
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_]+-\d+)/engine/order$',
42 42
        manager_views.search_engines_order,
43 43
        name='combo-manager-search-engines-order',
......
45 45
]
46 46

  
47 47
urlpatterns = [
48
    url(r'^manage/search/', decorated_includes(manager_required, include(search_manager_urls))),
49
    url(
48
    re_path(r'^manage/search/', decorated_includes(manager_required, include(search_manager_urls))),
49
    re_path(
50 50
        r'^ajax/search/(?P<cell_pk>\w+)/(?P<service_slug>[\w_:-]+)/$',
51 51
        SearchCell.ajax_results_view,
52 52
        name='combo-search-ajax-results',
combo/apps/wcs/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import url
17
from django.conf.urls import re_path
18 18

  
19 19
from .views import TrackingCodeView, redirect_crypto_url, tracking_code_search
20 20

  
21 21
urlpatterns = [
22
    url(r'^tracking-code/$', TrackingCodeView.as_view(), name='wcs-tracking-code'),
23
    url(r'^api/search/tracking-code/$', tracking_code_search, name='wcs-tracking-code-search'),
24
    url(
22
    re_path(r'^tracking-code/$', TrackingCodeView.as_view(), name='wcs-tracking-code'),
23
    re_path(r'^api/search/tracking-code/$', tracking_code_search, name='wcs-tracking-code-search'),
24
    re_path(
25 25
        r'^api/wcs/file/(?P<session_key>\w+)/(?P<crypto_url>[\w,-]+)/$',
26 26
        redirect_crypto_url,
27 27
        name='wcs-redirect-crypto-url',
combo/manager/urls.py
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17 17
import ckeditor.views as ckeditor_views
18
from django.conf.urls import url
18
from django.conf.urls import re_path
19 19
from django.views.decorators.cache import never_cache
20 20

  
21 21
from combo.apps.assets import views as assets_views
......
25 25
from . import views
26 26

  
27 27
urlpatterns = [
28
    url(r'^$', views.homepage, name='combo-manager-homepage'),
29
    url(r'^menu.json$', views.menu_json),
30
    url(r'^site-export$', pages_admin_required(views.site_export), name='combo-manager-site-export'),
31
    url(r'^site-import$', pages_admin_required(views.site_import), name='combo-manager-site-import'),
32
    url(r'^site-settings$', views.site_settings, name='combo-manager-site-settings'),
33
    url(
28
    re_path(r'^$', views.homepage, name='combo-manager-homepage'),
29
    re_path(r'^menu.json$', views.menu_json),
30
    re_path(r'^site-export$', pages_admin_required(views.site_export), name='combo-manager-site-export'),
31
    re_path(r'^site-import$', pages_admin_required(views.site_import), name='combo-manager-site-import'),
32
    re_path(r'^site-settings$', views.site_settings, name='combo-manager-site-settings'),
33
    re_path(
34 34
        r'^cells/invalid-report/$',
35 35
        pages_admin_required(views.invalid_cell_report),
36 36
        name='combo-manager-invalid-cell-report',
37 37
    ),
38
    url(r'^pages/add/$', views.page_add, name='combo-manager-page-add'),
39
    url(r'^pages/(?P<pk>\d+)/$', views.page_view, name='combo-manager-page-view'),
40
    url(
38
    re_path(r'^pages/add/$', views.page_add, name='combo-manager-page-add'),
39
    re_path(r'^pages/(?P<pk>\d+)/$', views.page_view, name='combo-manager-page-view'),
40
    re_path(
41 41
        r'^pages/(?P<pk>\d+)/template$', views.page_select_template, name='combo-manager-page-select-template'
42 42
    ),
43
    url(r'^pages/(?P<pk>\d+)/visibility$', views.page_visibility, name='combo-manager-page-visibility'),
44
    url(
43
    re_path(r'^pages/(?P<pk>\d+)/visibility$', views.page_visibility, name='combo-manager-page-visibility'),
44
    re_path(
45 45
        r'^pages/(?P<pk>\d+)/redirection$',
46 46
        views.page_edit_redirection,
47 47
        name='combo-manager-page-edit-redirection',
48 48
    ),
49
    url(
49
    re_path(
50 50
        r'^pages/(?P<pk>\d+)/include-in-navigation$',
51 51
        views.page_edit_include_in_navigation,
52 52
        name='combo-manager-page-edit-include-in-navigation',
53 53
    ),
54
    url(r'^pages/(?P<pk>\d+)/slug$', views.page_edit_slug, name='combo-manager-page-edit-slug'),
55
    url(r'^pages/(?P<pk>\d+)/title$', views.page_edit_title, name='combo-manager-page-edit-title'),
56
    url(
54
    re_path(r'^pages/(?P<pk>\d+)/slug$', views.page_edit_slug, name='combo-manager-page-edit-slug'),
55
    re_path(r'^pages/(?P<pk>\d+)/title$', views.page_edit_title, name='combo-manager-page-edit-title'),
56
    re_path(
57 57
        r'^pages/(?P<pk>\d+)/description$',
58 58
        views.page_edit_description,
59 59
        name='combo-manager-page-edit-description',
60 60
    ),
61
    url(r'^pages/(?P<pk>\d+)/picture/$', views.page_edit_picture, name='combo-manager-page-edit-picture'),
62
    url(
61
    re_path(r'^pages/(?P<pk>\d+)/picture/$', views.page_edit_picture, name='combo-manager-page-edit-picture'),
62
    re_path(
63 63
        r'^pages/(?P<pk>\d+)/remove-picture/$',
64 64
        views.page_remove_picture,
65 65
        name='combo-manager-page-remove-picture',
66 66
    ),
67
    url(
67
    re_path(
68 68
        r'^pages/(?P<pk>\d+)/extra-variables/$',
69 69
        views.page_edit_extra_variables,
70 70
        name='combo-manager-page-edit-extra-variables',
71 71
    ),
72
    url(
72
    re_path(
73 73
        r'^pages/(?P<pk>\d+)/delete$',
74 74
        pages_admin_required(views.page_delete),
75 75
        name='combo-manager-page-delete',
76 76
    ),
77
    url(r'^pages/(?P<pk>\d+)/export$', views.page_export, name='combo-manager-page-export'),
78
    url(
77
    re_path(r'^pages/(?P<pk>\d+)/export$', views.page_export, name='combo-manager-page-export'),
78
    re_path(
79 79
        r'^pages/(?P<pk>\d+)/add/$',
80 80
        pages_admin_required(views.page_add_child),
81 81
        name='combo-manager-page-add-child',
82 82
    ),
83
    url(
83
    re_path(
84 84
        r'^pages/(?P<pk>\d+)/duplicate$',
85 85
        pages_admin_required(views.page_duplicate),
86 86
        name='combo-manager-page-duplicate',
87 87
    ),
88
    url(
88
    re_path(
89 89
        r'^pages/(?P<pk>\d+)/save',
90 90
        pages_admin_required(views.snapshot_save),
91 91
        name='combo-manager-page-save',
92 92
    ),
93
    url(
93
    re_path(
94 94
        r'^pages/(?P<pk>\d+)/edit-roles/$',
95 95
        pages_admin_required(views.page_edit_roles),
96 96
        name='combo-manager-page-edit-roles',
97 97
    ),
98
    url(r'^pages/(?P<pk>\d+)/history$', views.page_history, name='combo-manager-page-history'),
99
    url(
98
    re_path(r'^pages/(?P<pk>\d+)/history$', views.page_history, name='combo-manager-page-history'),
99
    re_path(
100 100
        r'^pages/(?P<page_pk>\d+)/history/(?P<pk>\d+)/$',
101 101
        pages_admin_required(views.snapshot_restore),
102 102
        name='combo-manager-snapshot-restore',
103 103
    ),
104
    url(
104
    re_path(
105 105
        r'^pages/(?P<page_pk>\d+)/history/(?P<pk>\d+)/export$',
106 106
        pages_admin_required(views.snapshot_export),
107 107
        name='combo-manager-snapshot-export',
108 108
    ),
109
    url(
109
    re_path(
110 110
        r'^pages/(?P<page_pk>\d+)/add-cell-to-(?P<ph_key>[\w_-]+)/(?P<cell_type>\w+)/(?P<variant>[\w-]+)/$',
111 111
        views.page_add_cell,
112 112
        name='combo-manager-page-add-cell',
113 113
    ),
114
    url(
114
    re_path(
115 115
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/$',
116 116
        views.page_edit_cell,
117 117
        name='combo-manager-page-edit-cell',
118 118
    ),
119
    url(
119
    re_path(
120 120
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/delete$',
121 121
        views.page_delete_cell,
122 122
        name='combo-manager-page-delete-cell',
123 123
    ),
124
    url(
124
    re_path(
125 125
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/duplicate$',
126 126
        views.page_duplicate_cell,
127 127
        name='combo-manager-page-duplicate-cell',
128 128
    ),
129
    url(
129
    re_path(
130 130
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/add-link/(?P<link_code>[\w-]+)$',
131 131
        views.page_list_cell_add_link,
132 132
        name='combo-manager-page-list-cell-add-link',
133 133
    ),
134
    url(
134
    re_path(
135 135
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/link/(?P<link_cell_reference>[\w_-]+)/$',
136 136
        views.page_list_cell_edit_link,
137 137
        name='combo-manager-page-list-cell-edit-link',
138 138
    ),
139
    url(
139
    re_path(
140 140
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/link/(?P<link_cell_reference>[\w_-]+)/delete$',
141 141
        views.page_list_cell_delete_link,
142 142
        name='combo-manager-page-list-cell-delete-link',
143 143
    ),
144
    url(
144
    re_path(
145 145
        r'^pages/(?P<page_pk>\d+)/cell/(?P<cell_reference>[\w_-]+)/order$',
146 146
        views.link_list_order,
147 147
        name='combo-manager-link-list-order',
148 148
    ),
149
    url(r'^pages/(?P<page_pk>\d+)/order$', views.cell_order, name='combo-manager-cell-order'),
150
    url(
149
    re_path(r'^pages/(?P<page_pk>\d+)/order$', views.cell_order, name='combo-manager-cell-order'),
150
    re_path(
151 151
        r'^pages/(?P<page_pk>\d+)/placeholder/(?P<placeholder>[\w_-]+)/options$',
152 152
        views.placeholder_options,
153 153
        name='combo-manage-placeholder-options',
154 154
    ),
155
    url(r'^pages/order$', views.page_order, name='combo-manager-page-order'),
156
    url(
155
    re_path(r'^pages/order$', views.page_order, name='combo-manager-page-order'),
156
    re_path(
157 157
        r'^pages/(?P<page_path>[\w/_-]+)/$',
158 158
        views.page_redirect_to_edit,
159 159
        name='combo-manager-page-redirect-to-edit',
160 160
    ),
161
    url(r'^ckeditor/upload/', ckeditor_views.upload, name='ckeditor_upload'),
162
    url(r'^ckeditor/browse/', never_cache(assets_views.browse), name='ckeditor_browse'),
161
    re_path(r'^ckeditor/upload/', ckeditor_views.upload, name='ckeditor_upload'),
162
    re_path(r'^ckeditor/browse/', never_cache(assets_views.browse), name='ckeditor_browse'),
163 163
]
164 164

  
165 165
urlpatterns = plugins.register_plugins_manager_urls(urlpatterns)
combo/plugins.py
18 18
from functools import wraps
19 19

  
20 20
from django.apps import apps
21
from django.conf.urls import include, url
21
from django.conf.urls import include, re_path
22 22
from django.http import Http404
23 23
from django.views.debug import technical_404_response
24 24

  
......
38 38
        return
39 39
    urls = getattr(plugin, url_serie)()
40 40
    if not hasattr(plugin, 'is_enabled'):
41
        return url('^', include(urls))
41
        return re_path('^', include(urls))
42 42

  
43 43
    def plugin_enabled(func):
44 44
        @wraps(func)
......
51 51

  
52 52
    from .urls_utils import decorated_includes
53 53

  
54
    return url('^', decorated_includes(plugin_enabled, include(urls)))
54
    return re_path('^', decorated_includes(plugin_enabled, include(urls)))
55 55

  
56 56

  
57 57
def register_plugins_urls(urlpatterns):
......
78 78
        if urls:
79 79
            post_urls.append(urls)
80 80
    return (
81
        [url('', decorated_includes(staff_required, include(pre_urls)))]
81
        [re_path('', decorated_includes(staff_required, include(pre_urls)))]
82 82
        + urlpatterns
83
        + [url('', decorated_includes(staff_required, include(post_urls)))]
83
        + [re_path('', decorated_includes(staff_required, include(post_urls)))]
84 84
    )
85 85

  
86 86

  
combo/public/urls.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.conf.urls import url
17
from django.conf.urls import re_path
18 18

  
19 19
from combo.urls_utils import manager_required
20 20

  
21 21
from . import views
22 22

  
23 23
urlpatterns = [
24
    url(r'^api/menu-badges/$', views.menu_badges),
25
    url(
24
    re_path(r'^api/menu-badges/$', views.menu_badges),
25
    re_path(
26 26
        r'^ajax/cell/(?P<page_pk>\d+)/(?P<cell_reference>[\w_]+-\d+)/$',
27 27
        views.ajax_page_cell,
28 28
        name='combo-public-ajax-page-cell',
29 29
    ),
30
    url(r'^snapshot/(?P<pk>\w+)/$', manager_required(views.snapshot), name='combo-snapshot-view'),
31
    url(r'__style__/$', views.style),
32
    url(r'__skeleton__/$', views.skeleton),
33
    url(r'', views.page),
30
    re_path(r'^snapshot/(?P<pk>\w+)/$', manager_required(views.snapshot), name='combo-snapshot-view'),
31
    re_path(r'__style__/$', views.style),
32
    re_path(r'__skeleton__/$', views.skeleton),
33
    re_path(r'', views.page),
34 34
]
combo/urls.py
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17 17
from django.conf import settings
18
from django.conf.urls import include, url
18
from django.conf.urls import include, re_path
19 19
from django.conf.urls.static import static
20 20
from django.contrib import admin
21 21
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
......
27 27
from .urls_utils import decorated_includes, manager_required
28 28

  
29 29
urlpatterns = [
30
    url(r'^manage/', decorated_includes(manager_required, include(combo_manager_urls))),
31
    url(r'^admin/', admin.site.urls),
32
    url(r'^logout/$', logout, name='auth_logout'),
33
    url(r'^login/$', login, name='auth_login'),
34
    url(r'^404$', error404),
35
    url(r'^jsi18n$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
30
    re_path(r'^manage/', decorated_includes(manager_required, include(combo_manager_urls))),
31
    re_path(r'^admin/', admin.site.urls),
32
    re_path(r'^logout/$', logout, name='auth_logout'),
33
    re_path(r'^login/$', login, name='auth_login'),
34
    re_path(r'^404$', error404),
35
    re_path(r'^jsi18n$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
36 36
]
37 37

  
38 38
handler404 = error404
39 39

  
40 40
if 'mellon' in settings.INSTALLED_APPS:
41 41
    urlpatterns.append(
42
        url(
42
        re_path(
43 43
            r'^accounts/mellon/',
44 44
            include('mellon.urls'),
45 45
            kwargs={
......
57 57
    import debug_toolbar  # pylint: disable=import-error
58 58

  
59 59
    urlpatterns = [
60
        url(r'^__debug__/', include(debug_toolbar.urls)),
60
        re_path(r'^__debug__/', include(debug_toolbar.urls)),
61 61
    ] + urlpatterns
62 62

  
63 63
urlpatterns = plugins.register_plugins_urls(urlpatterns)
64 64

  
65 65
# other URLs are handled as public URLs
66
urlpatterns.append(url(r'', include('combo.public.urls')))
66
urlpatterns.append(re_path(r'', include('combo.public.urls')))
67
-