Projet

Général

Profil

0002-django4-replaced-urls.url-with-url.re_path-equivalen.patch

A. Berriot, 31 août 2022 17:41

Télécharger (34,3 ko)

Voir les différences:

Subject: [PATCH 2/4] django4: replaced urls.url with url.re_path equivalent
 (#68593)

 chrono/api/urls.py     |  96 ++++++-----
 chrono/manager/urls.py | 364 ++++++++++++++++++++---------------------
 chrono/urls.py         |  16 +-
 3 files changed, 242 insertions(+), 234 deletions(-)
chrono/api/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.urls import path, re_path
18 18

  
19 19
from . import views
20 20

  
21 21
urlpatterns = [
22
    url(r'^agenda/$', views.agendas),
23
    url(r'^agendas/datetimes/$', views.agendas_datetimes, name='api-agendas-datetimes'),
24
    url(r'^agendas/recurring-events/$', views.recurring_events_list, name='api-agenda-recurring-events'),
25
    url(r'^agendas/recurring-events/fillslots/$', views.recurring_fillslots, name='api-recurring-fillslots'),
26
    url(
27
        r'^agendas/events/$',
22
    path('agenda/', views.agendas),
23
    path('agendas/datetimes/', views.agendas_datetimes, name='api-agendas-datetimes'),
24
    path('agendas/recurring-events/', views.recurring_events_list, name='api-agenda-recurring-events'),
25
    path('agendas/recurring-events/fillslots/', views.recurring_fillslots, name='api-recurring-fillslots'),
26
    path(
27
        'agendas/events/',
28 28
        views.agendas_events,
29 29
        name='api-agendas-events',
30 30
    ),
31
    url(
32
        r'^agendas/events/fillslots/$',
31
    path(
32
        'agendas/events/fillslots/',
33 33
        views.agendas_events_fillslots,
34 34
        name='api-agendas-events-fillslots',
35 35
    ),
36
    url(
37
        r'^agendas/events/check-status/$',
36
    path(
37
        'agendas/events/check-status/',
38 38
        views.agendas_events_check_status,
39 39
        name='api-agendas-events-check-status',
40 40
    ),
41
    url(r'^agenda/(?P<agenda_identifier>[\w-]+)/$', views.agenda),
42
    url(r'^agenda/(?P<agenda_identifier>[\w-]+)/datetimes/$', views.datetimes, name='api-agenda-datetimes'),
43
    url(
41
    re_path(r'^agenda/(?P<agenda_identifier>[\w-]+)/$', views.agenda),
42
    re_path(
43
        r'^agenda/(?P<agenda_identifier>[\w-]+)/datetimes/$', views.datetimes, name='api-agenda-datetimes'
44
    ),
45
    re_path(
44 46
        r'^agenda/(?P<agenda_identifier>[\w-]+)/fillslot/(?P<event_identifier>[\w:-]+)/$',
45 47
        views.fillslot,
46 48
        name='api-fillslot',
47 49
    ),
48
    url(r'^agenda/(?P<agenda_identifier>[\w-]+)/fillslots/$', views.fillslots, name='api-agenda-fillslots'),
49
    url(
50
    re_path(
51
        r'^agenda/(?P<agenda_identifier>[\w-]+)/fillslots/$', views.fillslots, name='api-agenda-fillslots'
52
    ),
53
    re_path(
50 54
        r'^agenda/(?P<agenda_identifier>[\w-]+)/events/fillslots/$',
51 55
        views.events_fillslots,
52 56
        name='api-agenda-events-fillslots',
53 57
    ),
54
    url(
58
    re_path(
55 59
        r'^agenda/(?P<agenda_identifier>[\w-]+)/event/$',
56 60
        views.events,
57 61
        name='api-events',
58 62
    ),
59
    url(
63
    re_path(
60 64
        r'^agenda/(?P<agenda_identifier>[\w-]+)/event/(?P<event_identifier>[\w:-]+)/$',
61 65
        views.event,
62 66
        name='api-event',
63 67
    ),
64
    url(
68
    re_path(
65 69
        r'^agenda/(?P<agenda_identifier>[\w-]+)/status/(?P<event_identifier>[\w:-]+)/$',
66 70
        views.event_status,
67 71
        name='api-event-status',
68 72
    ),
69
    url(
73
    re_path(
70 74
        r'^agenda/(?P<agenda_identifier>[\w-]+)/bookings/(?P<event_identifier>[\w:-]+)/$',
71 75
        views.event_bookings,
72 76
        name='api-event-bookings',
73 77
    ),
74
    url(
78
    re_path(
75 79
        r'^agenda/(?P<agenda_identifier>[\w-]+)/check/(?P<event_identifier>[\w:-]+)/$',
76 80
        views.event_check,
77 81
        name='api-event-check',
78 82
    ),
79
    url(
83
    re_path(
80 84
        r'^agenda/meetings/(?P<meeting_identifier>[\w-]+)/datetimes/$',
81 85
        views.meeting_datetimes,
82 86
        name='api-agenda-meeting-datetimes-legacy',
83 87
    ),
84
    url(r'^agenda/(?P<agenda_identifier>[\w-]+)/meetings/$', views.meeting_list, name='api-agenda-meetings'),
85
    url(
88
    re_path(
89
        r'^agenda/(?P<agenda_identifier>[\w-]+)/meetings/$', views.meeting_list, name='api-agenda-meetings'
90
    ),
91
    re_path(
86 92
        r'^agenda/(?P<agenda_identifier>[\w-]+)/meetings/(?P<meeting_identifier>[\w-]+)/$',
87 93
        views.meeting_info,
88 94
        name='api-agenda-meetings',
89 95
    ),
90
    url(
96
    re_path(
91 97
        r'^agenda/(?P<agenda_identifier>[\w-]+)/resources/$',
92 98
        views.agenda_resource_list,
93 99
        name='api-agenda-resources',
94 100
    ),
95
    url(r'^agenda/(?P<agenda_identifier>[\w-]+)/desks/$', views.agenda_desk_list, name='api-agenda-desks'),
96
    url(
101
    re_path(
102
        r'^agenda/(?P<agenda_identifier>[\w-]+)/desks/$', views.agenda_desk_list, name='api-agenda-desks'
103
    ),
104
    re_path(
97 105
        r'^agenda/(?P<agenda_identifier>[\w-]+)/meetings/(?P<meeting_identifier>[\w-]+)/datetimes/$',
98 106
        views.meeting_datetimes,
99 107
        name='api-agenda-meeting-datetimes',
100 108
    ),
101
    url(
109
    re_path(
102 110
        r'^agenda/(?P<agenda_identifier>[\w-]+)/subscription/$',
103 111
        views.subscriptions,
104 112
        name='api-agenda-subscriptions',
105 113
    ),
106
    url(
114
    re_path(
107 115
        r'^agenda/(?P<agenda_identifier>[\w-]+)/subscription/(?P<subscription_pk>\d+)/$',
108 116
        views.subscription,
109 117
        name='api-agenda-subscription',
110 118
    ),
111
    url(r'^bookings/$', views.bookings, name='api-bookings'),
112
    url(r'^booking/(?P<booking_pk>\d+)/$', views.booking, name='api-booking'),
113
    url(r'^booking/(?P<booking_pk>\d+)/cancel/$', views.cancel_booking, name='api-cancel-booking'),
114
    url(r'^booking/(?P<booking_pk>\d+)/accept/$', views.accept_booking, name='api-accept-booking'),
115
    url(r'^booking/(?P<booking_pk>\d+)/anonymize/$', views.anonymize_booking, name='api-anonymize-booking'),
116
    url(r'^booking/(?P<booking_pk>\d+)/suspend/$', views.suspend_booking, name='api-suspend-booking'),
117
    url(r'^booking/(?P<booking_pk>\d+)/resize/$', views.resize_booking, name='api-resize-booking'),
118
    url(r'^booking/(?P<booking_pk>\d+)/ics/$', views.booking_ics, name='api-booking-ics'),
119
    url(r'^shared-custody/$', views.shared_custody_agendas, name='api-shared-custody-agendas'),
120
    url(
121
        r'^shared-custody/(?P<agenda_pk>\d+)/$',
119
    path('bookings/', views.bookings, name='api-bookings'),
120
    path('booking/<int:booking_pk>/', views.booking, name='api-booking'),
121
    path('booking/<int:booking_pk>/cancel/', views.cancel_booking, name='api-cancel-booking'),
122
    path('booking/<int:booking_pk>/accept/', views.accept_booking, name='api-accept-booking'),
123
    path('booking/<int:booking_pk>/anonymize/', views.anonymize_booking, name='api-anonymize-booking'),
124
    path('booking/<int:booking_pk>/suspend/', views.suspend_booking, name='api-suspend-booking'),
125
    path('booking/<int:booking_pk>/resize/', views.resize_booking, name='api-resize-booking'),
126
    path('booking/<int:booking_pk>/ics/', views.booking_ics, name='api-booking-ics'),
127
    path('shared-custody/', views.shared_custody_agendas, name='api-shared-custody-agendas'),
128
    path(
129
        'shared-custody/<int:agenda_pk>/',
122 130
        views.shared_custody_agenda,
123 131
        name='api-shared-custody-agenda',
124 132
    ),
125
    url(
126
        r'^shared-custody/(?P<agenda_pk>\d+)/add-child/$',
133
    path(
134
        'shared-custody/<int:agenda_pk>/add-child/',
127 135
        views.shared_custody_agenda_add_child,
128 136
        name='api-shared-custody-agenda-add-child',
129 137
    ),
130
    url(r'^statistics/$', views.statistics_list, name='api-statistics-list'),
131
    url(r'^statistics/bookings/$', views.bookings_statistics, name='api-statistics-bookings'),
138
    path('statistics/', views.statistics_list, name='api-statistics-list'),
139
    path('statistics/bookings/', views.bookings_statistics, name='api-statistics-bookings'),
132 140
]
chrono/manager/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.urls import path, re_path
18 18

  
19 19
from . import views
20 20

  
21 21
urlpatterns = [
22
    url(r'^$', views.homepage, name='chrono-manager-homepage'),
23
    url(
24
        r'^unavailability-calendars/$',
22
    path('', views.homepage, name='chrono-manager-homepage'),
23
    path(
24
        'unavailability-calendars/',
25 25
        views.unavailability_calendar_list,
26 26
        name='chrono-manager-unavailability-calendar-list',
27 27
    ),
28
    url(
29
        r'^unavailability-calendar/add/$',
28
    path(
29
        'unavailability-calendar/add/',
30 30
        views.unavailability_calendar_add,
31 31
        name='chrono-manager-unavailability-calendar-add',
32 32
    ),
33
    url(
34
        r'^unavailability-calendar/(?P<pk>\d+)/$',
33
    path(
34
        'unavailability-calendar/<int:pk>/',
35 35
        views.unavailability_calendar_view,
36 36
        name='chrono-manager-unavailability-calendar-view',
37 37
    ),
38
    url(
39
        r'^unavailability-calendar/(?P<pk>\d+)/edit/$',
38
    path(
39
        'unavailability-calendar/<int:pk>/edit/',
40 40
        views.unavailability_calendar_edit,
41 41
        name='chrono-manager-unavailability-calendar-edit',
42 42
    ),
43
    url(
44
        r'^unavailability-calendar/(?P<pk>\d+)/delete/$',
43
    path(
44
        'unavailability-calendar/<int:pk>/delete/',
45 45
        views.unavailability_calendar_delete,
46 46
        name='chrono-manager-unavailability-calendar-delete',
47 47
    ),
48
    url(
49
        r'^unavailability-calendar/(?P<pk>\d+)/settings$',
48
    path(
49
        'unavailability-calendar/<int:pk>/settings',
50 50
        views.unavailability_calendar_settings,
51 51
        name='chrono-manager-unavailability-calendar-settings',
52 52
    ),
53
    url(
54
        r'^unavailability-calendar/(?P<pk>\d+)/export$',
53
    path(
54
        'unavailability-calendar/<int:pk>/export',
55 55
        views.unavailability_calendar_export,
56 56
        name='chrono-manager-unavailability-calendar-export',
57 57
    ),
58
    url(
59
        r'^unavailability-calendar/(?P<pk>\d+)/add-unavailability$',
58
    path(
59
        'unavailability-calendar/<int:pk>/add-unavailability',
60 60
        views.unavailability_calendar_add_unavailability,
61 61
        name='chrono-manager-unavailability-calendar-add-unavailability',
62 62
    ),
63
    url(
64
        r'^unavailability-calendar/(?P<pk>\d+)/import-unavailabilities/$',
63
    path(
64
        'unavailability-calendar/<int:pk>/import-unavailabilities/',
65 65
        views.unavailability_calendar_import_unavailabilities,
66 66
        name='chrono-manager-unavailability-calendar-import-unavailabilities',
67 67
    ),
68
    url(r'^resources/$', views.resource_list, name='chrono-manager-resource-list'),
69
    url(r'^resource/add/$', views.resource_add, name='chrono-manager-resource-add'),
70
    url(r'^resource/(?P<pk>\d+)/$', views.resource_view, name='chrono-manager-resource-view'),
71
    url(
68
    path('resources/', views.resource_list, name='chrono-manager-resource-list'),
69
    path('resource/add/', views.resource_add, name='chrono-manager-resource-add'),
70
    path('resource/<int:pk>/', views.resource_view, name='chrono-manager-resource-view'),
71
    re_path(
72 72
        r'^resource/(?P<pk>\d+)/(?P<year>[0-9]{4})/(?P<month>[0-9]+)/$',
73 73
        views.resource_monthly_view,
74 74
        name='chrono-manager-resource-month-view',
75 75
    ),
76
    url(
76
    re_path(
77 77
        r'^resource/(?P<pk>\d+)/(?P<year>[0-9]{4})/(?P<month>[0-9]+)/(?P<day>[0-9]+)/$',
78 78
        views.resource_day_view,
79 79
        name='chrono-manager-resource-day-view',
80 80
    ),
81
    url(r'^resource/(?P<pk>\d+)/edit/$', views.resource_edit, name='chrono-manager-resource-edit'),
82
    url(r'^resource/(?P<pk>\d+)/delete/$', views.resource_delete, name='chrono-manager-resource-delete'),
83
    url(r'^categories/$', views.category_list, name='chrono-manager-category-list'),
84
    url(r'^category/add/$', views.category_add, name='chrono-manager-category-add'),
85
    url(r'^category/(?P<pk>\d+)/edit/$', views.category_edit, name='chrono-manager-category-edit'),
86
    url(r'^category/(?P<pk>\d+)/delete/$', views.category_delete, name='chrono-manager-category-delete'),
87
    url(r'^events-types/$', views.events_type_list, name='chrono-manager-events-type-list'),
88
    url(r'^events-type/add/$', views.events_type_add, name='chrono-manager-events-type-add'),
89
    url(r'^events-type/(?P<pk>\d+)/edit/$', views.events_type_edit, name='chrono-manager-events-type-edit'),
90
    url(
91
        r'^events-type/(?P<pk>\d+)/delete/$',
81
    path('resource/<int:pk>/edit/', views.resource_edit, name='chrono-manager-resource-edit'),
82
    path('resource/<int:pk>/delete/', views.resource_delete, name='chrono-manager-resource-delete'),
83
    path('categories/', views.category_list, name='chrono-manager-category-list'),
84
    path('category/add/', views.category_add, name='chrono-manager-category-add'),
85
    path('category/<int:pk>/edit/', views.category_edit, name='chrono-manager-category-edit'),
86
    path('category/<int:pk>/delete/', views.category_delete, name='chrono-manager-category-delete'),
87
    path('events-types/', views.events_type_list, name='chrono-manager-events-type-list'),
88
    path('events-type/add/', views.events_type_add, name='chrono-manager-events-type-add'),
89
    path('events-type/<int:pk>/edit/', views.events_type_edit, name='chrono-manager-events-type-edit'),
90
    path(
91
        'events-type/<int:pk>/delete/',
92 92
        views.events_type_delete,
93 93
        name='chrono-manager-events-type-delete',
94 94
    ),
95
    url(r'^agendas/add/$', views.agenda_add, name='chrono-manager-agenda-add'),
96
    url(r'^agendas/import/$', views.agendas_import, name='chrono-manager-agendas-import'),
97
    url(r'^agendas/export/$', views.agendas_export, name='chrono-manager-agendas-export'),
98
    url(r'^agendas/(?P<pk>\d+)/$', views.agenda_view, name='chrono-manager-agenda-view'),
99
    url(r'^agendas/(?P<slug>[-_a-zA-Z0-9]+)/$', views.agenda_view, name='chrono-manager-agenda-view'),
100
    url(
101
        r'^agendas/(?P<pk>\d+)/month/$',
95
    path('agendas/add/', views.agenda_add, name='chrono-manager-agenda-add'),
96
    path('agendas/import/', views.agendas_import, name='chrono-manager-agendas-import'),
97
    path('agendas/export/', views.agendas_export, name='chrono-manager-agendas-export'),
98
    path('agendas/<int:pk>/', views.agenda_view, name='chrono-manager-agenda-view'),
99
    re_path(r'^agendas/(?P<slug>[-_a-zA-Z0-9]+)/$', views.agenda_view, name='chrono-manager-agenda-view'),
100
    path(
101
        'agendas/<int:pk>/month/',
102 102
        views.agenda_month_redirect_view,
103 103
        name='chrono-manager-agenda-month-redirect-view',
104 104
    ),
105
    url(
105
    re_path(
106 106
        r'^agendas/(?P<pk>\d+)/(?P<year>[0-9]{4})/(?P<month>[0-9]+)/$',
107 107
        views.agenda_monthly_view,
108 108
        name='chrono-manager-agenda-month-view',
109 109
    ),
110
    url(
111
        r'^agendas/(?P<pk>\d+)/day/$',
110
    path(
111
        'agendas/<int:pk>/day/',
112 112
        views.agenda_day_redirect_view,
113 113
        name='chrono-manager-agenda-day-redirect-view',
114 114
    ),
115
    url(
115
    re_path(
116 116
        r'^agendas/(?P<pk>\d+)/(?P<year>[0-9]{4})/(?P<month>[0-9]+)/(?P<day>[0-9]+)/$',
117 117
        views.agenda_day_view,
118 118
        name='chrono-manager-agenda-day-view',
119 119
    ),
120
    url(
121
        r'^agendas/(?P<pk>\d+)/events/open/$',
120
    path(
121
        'agendas/<int:pk>/events/open/',
122 122
        views.agenda_open_events_view,
123 123
        name='chrono-manager-agenda-open-events-view',
124 124
    ),
125
    url(r'^agendas/(?P<pk>\d+)/settings$', views.agenda_settings, name='chrono-manager-agenda-settings'),
126
    url(
125
    path('agendas/<int:pk>/settings', views.agenda_settings, name='chrono-manager-agenda-settings'),
126
    re_path(
127 127
        r'^agendas/(?P<slug>[-_a-zA-Z0-9]+)/settings/$',
128 128
        views.agenda_settings_redirect_view,
129 129
        name='chrono-manager-agenda-settings-redirect',
130 130
    ),
131
    url(r'^agendas/(?P<pk>\d+)/edit$', views.agenda_edit, name='chrono-manager-agenda-edit'),
132
    url(
133
        r'^agendas/(?P<pk>\d+)/booking-delays$',
131
    path('agendas/<int:pk>/edit', views.agenda_edit, name='chrono-manager-agenda-edit'),
132
    path(
133
        'agendas/<int:pk>/booking-delays',
134 134
        views.agenda_booking_delays,
135 135
        name='chrono-manager-agenda-booking-delays',
136 136
    ),
137
    url(r'^agendas/(?P<pk>\d+)/roles$', views.agenda_roles, name='chrono-manager-agenda-roles'),
138
    url(
139
        r'^agendas/(?P<pk>\d+)/display-options$',
137
    path('agendas/<int:pk>/roles', views.agenda_roles, name='chrono-manager-agenda-roles'),
138
    path(
139
        'agendas/<int:pk>/display-options',
140 140
        views.agenda_display_settings,
141 141
        name='chrono-manager-agenda-display-settings',
142 142
    ),
143
    url(
144
        r'^agendas/(?P<pk>\d+)/check-options$',
143
    path(
144
        'agendas/<int:pk>/check-options',
145 145
        views.agenda_booking_check_settings,
146 146
        name='chrono-manager-agenda-booking-check-settings',
147 147
    ),
148
    url(r'^agendas/(?P<pk>\d+)/delete$', views.agenda_delete, name='chrono-manager-agenda-delete'),
149
    url(r'^agendas/(?P<pk>\d+)/export$', views.agenda_export, name='chrono-manager-agenda-export'),
150
    url(r'^agendas/(?P<pk>\d+)/add-event$', views.agenda_add_event, name='chrono-manager-agenda-add-event'),
151
    url(r'^agendas/(?P<pk>\d+)/duplicate$', views.agenda_duplicate, name='chrono-manager-agenda-duplicate'),
152
    url(
153
        r'^agendas/(?P<pk>\d+)/desk-management-toggle$',
148
    path('agendas/<int:pk>/delete', views.agenda_delete, name='chrono-manager-agenda-delete'),
149
    path('agendas/<int:pk>/export', views.agenda_export, name='chrono-manager-agenda-export'),
150
    path('agendas/<int:pk>/add-event', views.agenda_add_event, name='chrono-manager-agenda-add-event'),
151
    path('agendas/<int:pk>/duplicate', views.agenda_duplicate, name='chrono-manager-agenda-duplicate'),
152
    path(
153
        'agendas/<int:pk>/desk-management-toggle',
154 154
        views.agenda_desk_management_toggle_view,
155 155
        name='chrono-manager-agenda-desk-management-toggle-view',
156 156
    ),
157
    url(
158
        r'^agendas/(?P<pk>\d+)/import-events$',
157
    path(
158
        'agendas/<int:pk>/import-events',
159 159
        views.agenda_import_events,
160 160
        name='chrono-manager-agenda-import-events',
161 161
    ),
162
    url(
163
        r'^agendas/(?P<pk>\d+)/export-events$',
162
    path(
163
        'agendas/<int:pk>/export-events',
164 164
        views.agenda_export_events,
165 165
        name='chrono-manager-agenda-export-events',
166 166
    ),
167
    url(
168
        r'^agendas/(?P<pk>\d+)/notifications$',
167
    path(
168
        'agendas/<int:pk>/notifications',
169 169
        views.agenda_notifications_settings,
170 170
        name='chrono-manager-agenda-notifications-settings',
171 171
    ),
172
    url(
173
        r'^agendas/(?P<pk>\d+)/reminder$',
172
    path(
173
        'agendas/<int:pk>/reminder',
174 174
        views.agenda_reminder_settings,
175 175
        name='chrono-manager-agenda-reminder-settings',
176 176
    ),
177
    url(
178
        r'^agendas/(?P<pk>\d+)/reminder/test/$',
177
    path(
178
        'agendas/<int:pk>/reminder/test/',
179 179
        views.agenda_reminder_test,
180 180
        name='chrono-manager-agenda-reminder-test',
181 181
    ),
182
    url(
182
    re_path(
183 183
        r'^agendas/(?P<pk>\d+)/reminder/preview/(?P<type>(email|sms))/$',
184 184
        views.agenda_reminder_preview,
185 185
        name='chrono-manager-agenda-reminder-preview',
186 186
    ),
187
    url(
188
        r'^agendas/(?P<pk>\d+)/events/timesheet$',
187
    path(
188
        'agendas/<int:pk>/events/timesheet',
189 189
        views.events_timesheet,
190 190
        name='chrono-manager-events-timesheet',
191 191
    ),
192
    url(
193
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/$',
192
    path(
193
        'agendas/<int:pk>/events/<int:event_pk>/',
194 194
        views.event_view,
195 195
        name='chrono-manager-event-view',
196 196
    ),
197
    url(
198
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/edit$',
197
    path(
198
        'agendas/<int:pk>/events/<int:event_pk>/edit',
199 199
        views.event_edit,
200 200
        name='chrono-manager-event-edit',
201 201
    ),
202
    url(
203
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/duplicate$',
202
    path(
203
        'agendas/<int:pk>/events/<int:event_pk>/duplicate',
204 204
        views.event_duplicate,
205 205
        name='chrono-manager-event-duplicate',
206 206
    ),
207
    url(
208
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/delete$',
207
    path(
208
        'agendas/<int:pk>/events/<int:event_pk>/delete',
209 209
        views.event_delete,
210 210
        name='chrono-manager-event-delete',
211 211
    ),
212
    url(
213
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/cancel$',
212
    path(
213
        'agendas/<int:pk>/events/<int:event_pk>/cancel',
214 214
        views.event_cancel,
215 215
        name='chrono-manager-event-cancel',
216 216
    ),
217
    url(
218
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/check$',
217
    path(
218
        'agendas/<int:pk>/events/<int:event_pk>/check',
219 219
        views.event_check,
220 220
        name='chrono-manager-event-check',
221 221
    ),
222
    url(
223
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/presence$',
222
    path(
223
        'agendas/<int:pk>/events/<int:event_pk>/presence',
224 224
        views.event_presence,
225 225
        name='chrono-manager-event-presence',
226 226
    ),
227
    url(
228
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/absence$',
227
    path(
228
        'agendas/<int:pk>/events/<int:event_pk>/absence',
229 229
        views.event_absence,
230 230
        name='chrono-manager-event-absence',
231 231
    ),
232
    url(
233
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/checked$',
232
    path(
233
        'agendas/<int:pk>/events/<int:event_pk>/checked',
234 234
        views.event_checked,
235 235
        name='chrono-manager-event-checked',
236 236
    ),
237
    url(
238
        r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/timesheet$',
237
    path(
238
        'agendas/<int:pk>/events/<int:event_pk>/timesheet',
239 239
        views.events_timesheet,
240 240
        name='chrono-manager-event-timesheet',
241 241
    ),
242
    url(
243
        r'^agendas/(?P<pk>\d+)/event_cancellation_report/(?P<report_pk>\d+)/$',
242
    path(
243
        'agendas/<int:pk>/event_cancellation_report/<int:report_pk>/',
244 244
        views.event_cancellation_report,
245 245
        name='chrono-manager-event-cancellation-report',
246 246
    ),
247
    url(
248
        r'^agendas/(?P<pk>\d+)/event_cancellation_reports/$',
247
    path(
248
        'agendas/<int:pk>/event_cancellation_reports/',
249 249
        views.event_cancellation_report_list,
250 250
        name='chrono-manager-event-cancellation-report-list',
251 251
    ),
252
    url(
253
        r'^agendas/(?P<pk>\d+)/add-resource/$',
252
    path(
253
        'agendas/<int:pk>/add-resource/',
254 254
        views.agenda_add_resource,
255 255
        name='chrono-manager-agenda-add-resource',
256 256
    ),
257
    url(
258
        r'^agendas/(?P<pk>\d+)/resource/(?P<resource_pk>\d+)/delete/$',
257
    path(
258
        'agendas/<int:pk>/resource/<int:resource_pk>/delete/',
259 259
        views.agenda_delete_resource,
260 260
        name='chrono-manager-agenda-delete-resource',
261 261
    ),
262
    url(
263
        r'^agendas/(?P<pk>\d+)/add-meeting-type$',
262
    path(
263
        'agendas/<int:pk>/add-meeting-type',
264 264
        views.agenda_add_meeting_type,
265 265
        name='chrono-manager-agenda-add-meeting-type',
266 266
    ),
267
    url(r'^meetingtypes/(?P<pk>\d+)/edit$', views.meeting_type_edit, name='chrono-manager-meeting-type-edit'),
268
    url(
269
        r'^meetingtypes/(?P<pk>\d+)/delete$',
267
    path('meetingtypes/<int:pk>/edit', views.meeting_type_edit, name='chrono-manager-meeting-type-edit'),
268
    path(
269
        'meetingtypes/<int:pk>/delete',
270 270
        views.meeting_type_delete,
271 271
        name='chrono-manager-meeting-type-delete',
272 272
    ),
273
    url(
274
        r'^agendas/(?P<agenda_pk>\d+)/desk/(?P<pk>\d+)/add-time-period$',
273
    path(
274
        'agendas/<int:agenda_pk>/desk/<int:pk>/add-time-period',
275 275
        views.agenda_add_time_period,
276 276
        name='chrono-manager-agenda-add-time-period',
277 277
    ),
278
    url(
279
        r'^agendas/(?P<pk>\d+)/add-time-period$',
278
    path(
279
        'agendas/<int:pk>/add-time-period',
280 280
        views.virtual_agenda_add_time_period,
281 281
        name='chrono-manager-virtual-agenda-add-time-period',
282 282
    ),
283
    url(r'^timeperiods/(?P<pk>\d+)/edit$', views.time_period_edit, name='chrono-manager-time-period-edit'),
284
    url(
285
        r'^timeperiods/(?P<pk>\d+)/delete$',
283
    path('timeperiods/<int:pk>/edit', views.time_period_edit, name='chrono-manager-time-period-edit'),
284
    path(
285
        'timeperiods/<int:pk>/delete',
286 286
        views.time_period_delete,
287 287
        name='chrono-manager-time-period-delete',
288 288
    ),
289
    url(r'^agendas/(?P<pk>\d+)/add-desk$', views.agenda_add_desk, name='chrono-manager-agenda-add-desk'),
290
    url(r'^desks/(?P<pk>\d+)/edit$', views.desk_edit, name='chrono-manager-desk-edit'),
291
    url(r'^desks/(?P<pk>\d+)/delete$', views.desk_delete, name='chrono-manager-desk-delete'),
292
    url(
293
        r'^desk/(?P<pk>\d+)/unavailability-calendar/(?P<unavailability_calendar_pk>\d+)/toggle/$',
289
    path('agendas/<int:pk>/add-desk', views.agenda_add_desk, name='chrono-manager-agenda-add-desk'),
290
    path('desks/<int:pk>/edit', views.desk_edit, name='chrono-manager-desk-edit'),
291
    path('desks/<int:pk>/delete', views.desk_delete, name='chrono-manager-desk-delete'),
292
    path(
293
        'desk/<int:pk>/unavailability-calendar/<int:unavailability_calendar_pk>/toggle/',
294 294
        views.unavailability_calendar_toggle_view,
295 295
        name='chrono-manager-unavailability-calendar-toggle-view',
296 296
    ),
297
    url(
298
        r'^agendas/(?P<agenda_pk>\d+)/desk/(?P<pk>\d+)/add-time-period-exception$',
297
    path(
298
        'agendas/<int:agenda_pk>/desk/<int:pk>/add-time-period-exception',
299 299
        views.agenda_add_time_period_exception,
300 300
        name='chrono-manager-agenda-add-time-period-exception',
301 301
    ),
302
    url(
303
        r'^agendas/desk/(?P<pk>\d+)/import-exceptions-from-ics/$',
302
    path(
303
        'agendas/desk/<int:pk>/import-exceptions-from-ics/',
304 304
        views.desk_import_time_period_exceptions,
305 305
        name='chrono-manager-desk-add-import-time-period-exceptions',
306 306
    ),
307
    url(
308
        r'^agendas/(?P<pk>\d+)/add-virtual-member$',
307
    path(
308
        'agendas/<int:pk>/add-virtual-member',
309 309
        views.agenda_add_virtual_member,
310 310
        name='chrono-manager-agenda-add-virtual-member',
311 311
    ),
312
    url(
313
        r'^virtual-members/(?P<pk>\d+)/delete$',
312
    path(
313
        'virtual-members/<int:pk>/delete',
314 314
        views.virtual_member_delete,
315 315
        name='chrono-manager-virtual-member-delete',
316 316
    ),
317
    url(
318
        r'^time-period-exceptions/(?P<pk>\d+)/edit$',
317
    path(
318
        'time-period-exceptions/<int:pk>/edit',
319 319
        views.time_period_exception_edit,
320 320
        name='chrono-manager-time-period-exception-edit',
321 321
    ),
322
    url(
323
        r'^time-period-exceptions/(?P<pk>\d+)/delete$',
322
    path(
323
        'time-period-exceptions/<int:pk>/delete',
324 324
        views.time_period_exception_delete,
325 325
        name='chrono-manager-time-period-exception-delete',
326 326
    ),
327
    url(
328
        r'^time-period-exceptions/(?P<pk>\d+)/exception-extract-list$',
327
    path(
328
        'time-period-exceptions/<int:pk>/exception-extract-list',
329 329
        views.time_period_exception_extract_list,
330 330
        name='chrono-manager-time-period-exception-extract-list',
331 331
    ),
332
    url(
333
        r'^time-period-exceptions/(?P<pk>\d+)/exception-list$',
332
    path(
333
        'time-period-exceptions/<int:pk>/exception-list',
334 334
        views.time_period_exception_list,
335 335
        name='chrono-manager-time-period-exception-list',
336 336
    ),
337
    url(
338
        r'^time-period-exceptions-source/(?P<pk>\d+)/delete$',
337
    path(
338
        'time-period-exceptions-source/<int:pk>/delete',
339 339
        views.time_period_exception_source_delete,
340 340
        name='chrono-manager-time-period-exception-source-delete',
341 341
    ),
342
    url(
343
        r'^time-period-exceptions-source/(?P<pk>\d+)/refresh$',
342
    path(
343
        'time-period-exceptions-source/<int:pk>/refresh',
344 344
        views.time_period_exception_source_refresh,
345 345
        name='chrono-manager-time-period-exception-source-refresh',
346 346
    ),
347
    url(
348
        r'^time-period-exceptions-source/(?P<pk>\d+)/toggle$',
347
    path(
348
        'time-period-exceptions-source/<int:pk>/toggle',
349 349
        views.time_period_exception_source_toggle,
350 350
        name='chrono-manager-time-period-exception-source-toggle',
351 351
    ),
352
    url(
353
        r'^time-period-exceptions-source/(?P<pk>\d+)/replace$',
352
    path(
353
        'time-period-exceptions-source/<int:pk>/replace',
354 354
        views.time_period_exception_source_replace,
355 355
        name='chrono-manager-time-period-exception-source-replace',
356 356
    ),
357
    url(
358
        r'^agendas/(?P<pk>\d+)/bookings/(?P<booking_pk>\d+)/cancel$',
357
    path(
358
        'agendas/<int:pk>/bookings/<int:booking_pk>/cancel',
359 359
        views.booking_cancel,
360 360
        name='chrono-manager-booking-cancel',
361 361
    ),
362
    url(
363
        r'^agendas/(?P<pk>\d+)/bookings/(?P<booking_pk>\d+)/presence$',
362
    path(
363
        'agendas/<int:pk>/bookings/<int:booking_pk>/presence',
364 364
        views.booking_presence,
365 365
        name='chrono-manager-booking-presence',
366 366
    ),
367
    url(
368
        r'^agendas/(?P<pk>\d+)/bookings/(?P<booking_pk>\d+)/absence$',
367
    path(
368
        'agendas/<int:pk>/bookings/<int:booking_pk>/absence',
369 369
        views.booking_absence,
370 370
        name='chrono-manager-booking-absence',
371 371
    ),
372
    url(
372
    re_path(
373 373
        r'^agendas/events.csv$',
374 374
        views.agenda_import_events_sample_csv,
375 375
        name='chrono-manager-sample-events-csv',
376 376
    ),
377
    url(
378
        r'^shared-custody/settings/$',
377
    path(
378
        'shared-custody/settings/',
379 379
        views.shared_custody_settings,
380 380
        name='chrono-manager-shared-custody-settings',
381 381
    ),
382
    url(
383
        r'^shared-custody/(?P<pk>\d+)/$',
382
    path(
383
        'shared-custody/<int:pk>/',
384 384
        views.shared_custody_agenda_view,
385 385
        name='chrono-manager-shared-custody-agenda-view',
386 386
    ),
387
    url(
387
    re_path(
388 388
        r'^shared-custody/(?P<pk>\d+)/(?P<year>[0-9]{4})/(?P<month>[0-9]+)/$',
389 389
        views.shared_custody_agenda_monthly_view,
390 390
        name='chrono-manager-shared-custody-agenda-month-view',
391 391
    ),
392
    url(
393
        r'^shared-custody/(?P<pk>\d+)/settings/$',
392
    path(
393
        'shared-custody/<int:pk>/settings/',
394 394
        views.shared_custody_agenda_settings,
395 395
        name='chrono-manager-shared-custody-agenda-settings',
396 396
    ),
397
    url(
398
        r'^shared-custody/(?P<pk>\d+)/delete$',
397
    path(
398
        'shared-custody/<int:pk>/delete',
399 399
        views.shared_custody_agenda_delete,
400 400
        name='chrono-manager-shared-custody-agenda-delete',
401 401
    ),
402
    url(
403
        r'^shared-custody/(?P<pk>\d+)/add-rule$',
402
    path(
403
        'shared-custody/<int:pk>/add-rule',
404 404
        views.shared_custody_agenda_add_rule,
405 405
        name='chrono-manager-shared-custody-agenda-add-rule',
406 406
    ),
407
    url(
408
        r'^shared-custody/(?P<pk>\d+)/rules/(?P<rule_pk>\d+)/edit$',
407
    path(
408
        'shared-custody/<int:pk>/rules/<int:rule_pk>/edit',
409 409
        views.shared_custody_agenda_edit_rule,
410 410
        name='chrono-manager-shared-custody-agenda-edit-rule',
411 411
    ),
412
    url(
413
        r'^shared-custody/(?P<pk>\d+)/rules/(?P<rule_pk>\d+)/delete$',
412
    path(
413
        'shared-custody/<int:pk>/rules/<int:rule_pk>/delete',
414 414
        views.shared_custody_agenda_delete_rule,
415 415
        name='chrono-manager-shared-custody-agenda-delete-rule',
416 416
    ),
417
    url(
418
        r'^shared-custody/(?P<pk>\d+)/add-holiday-rule$',
417
    path(
418
        'shared-custody/<int:pk>/add-holiday-rule',
419 419
        views.shared_custody_agenda_add_holiday_rule,
420 420
        name='chrono-manager-shared-custody-agenda-add-holiday-rule',
421 421
    ),
422
    url(
423
        r'^shared-custody/(?P<pk>\d+)/holiday-rules/(?P<rule_pk>\d+)/edit$',
422
    path(
423
        'shared-custody/<int:pk>/holiday-rules/<int:rule_pk>/edit',
424 424
        views.shared_custody_agenda_edit_holiday_rule,
425 425
        name='chrono-manager-shared-custody-agenda-edit-holiday-rule',
426 426
    ),
427
    url(
428
        r'^shared-custody/(?P<pk>\d+)/holiday-rules/(?P<rule_pk>\d+)/delete$',
427
    path(
428
        'shared-custody/<int:pk>/holiday-rules/<int:rule_pk>/delete',
429 429
        views.shared_custody_agenda_delete_holiday_rule,
430 430
        name='chrono-manager-shared-custody-agenda-delete-holiday-rule',
431 431
    ),
432
    url(
433
        r'^shared-custody/(?P<pk>\d+)/add-period$',
432
    path(
433
        'shared-custody/<int:pk>/add-period',
434 434
        views.shared_custody_agenda_add_period,
435 435
        name='chrono-manager-shared-custody-agenda-add-period',
436 436
    ),
437
    url(
438
        r'^shared-custody/(?P<pk>\d+)/periods/(?P<period_pk>\d+)/edit$',
437
    path(
438
        'shared-custody/<int:pk>/periods/<int:period_pk>/edit',
439 439
        views.shared_custody_agenda_edit_period,
440 440
        name='chrono-manager-shared-custody-agenda-edit-period',
441 441
    ),
442
    url(
443
        r'^shared-custody/(?P<pk>\d+)/periods/(?P<period_pk>\d+)/delete$',
442
    path(
443
        'shared-custody/<int:pk>/periods/<int:period_pk>/delete',
444 444
        views.shared_custody_agenda_delete_period,
445 445
        name='chrono-manager-shared-custody-agenda-delete-period',
446 446
    ),
447
    url(r'^menu.json$', views.menu_json),
447
    re_path(r'^menu.json$', views.menu_json),
448 448
]
chrono/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
19 18
from django.conf.urls.static import static
20 19
from django.contrib.auth.decorators import login_required
21 20
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
21
from django.urls import include, path, re_path
22 22

  
23 23
from .api.urls import urlpatterns as chrono_api_urls
24 24
from .manager.urls import urlpatterns as chrono_manager_urls
......
26 26
from .views import LoginView, LogoutView, homepage
27 27

  
28 28
urlpatterns = [
29
    url(r'^$', homepage, name='home'),
30
    url(r'^manage/', decorated_includes(login_required, include(chrono_manager_urls))),
31
    url(r'^api/', include(chrono_api_urls)),
32
    url(r'^logout/$', LogoutView.as_view(), name='auth_logout'),
33
    url(r'^login/$', LoginView.as_view(), name='auth_login'),
29
    path('', homepage, name='home'),
30
    re_path(r'^manage/', decorated_includes(login_required, include(chrono_manager_urls))),
31
    re_path(r'^api/', include(chrono_api_urls)),
32
    path('logout/', LogoutView.as_view(), name='auth_logout'),
33
    path('login/', LoginView.as_view(), name='auth_login'),
34 34
]
35 35

  
36 36
if 'mellon' in settings.INSTALLED_APPS:
37 37
    urlpatterns.append(
38
        url(
38
        re_path(
39 39
            r'^accounts/mellon/',
40 40
            include('mellon.urls'),
41 41
            kwargs={
......
48 48
    import debug_toolbar  # pylint: disable=import-error
49 49

  
50 50
    urlpatterns = [
51
        url(r'^__debug__/', include(debug_toolbar.urls)),
51
        re_path(r'^__debug__/', include(debug_toolbar.urls)),
52 52
    ] + urlpatterns
53 53

  
54 54
# static and media files
55
-