Skip to content

Commit 2c86d5c

Browse files
hongquanmariobehling
authored andcommitted
Show which plugins register URLs (#1420)
* Show which plugins register URLs * Fix URL registration for VideoSPAView * Apply suggestions from code review * Fix VideoAssetView URL registration --------- Co-authored-by: Mario Behling <mb@mariobehling.de>
1 parent cd571b2 commit 2c86d5c

File tree

12 files changed

+343
-272
lines changed

12 files changed

+343
-272
lines changed

app/eventyay/api/urls.py

Lines changed: 52 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from django.apps import apps
44
from django.http import HttpResponsePermanentRedirect
55
from django.urls import include, path
6-
from django.urls import re_path as url
76
from rest_framework import routers
87

98
from eventyay.api.views import cart
9+
from eventyay.common.urls import OrganizerSlugConverter # noqa: F401 (registers converter)
1010

1111
from ..eventyay_common.views.billing import BillingInvoicePreview
1212
from .views import (
@@ -42,14 +42,15 @@ def talks_to_submissions_redirect(request, event, subpath):
4242
Redirects requests from /events/.../talks/... to /events/.../submissions/...
4343
preserving the subpath and query parameters.
4444
"""
45-
new_path = request.path.replace("/talks/", "/submissions/", 1)
45+
new_path = request.path.replace('/talks/', '/submissions/', 1)
4646

47-
query_string = request.META.get('QUERY_STRING', '')
48-
if query_string:
47+
if query_string := request.META.get('QUERY_STRING', ''):
48+
new_path += f'?{query_string}'
4949
new_path += '?' + query_string
5050

5151
return HttpResponsePermanentRedirect(new_path)
5252

53+
5354
router = routers.DefaultRouter()
5455
router.register(r'organizers', organizer.OrganizerViewSet)
5556

@@ -99,7 +100,11 @@ def talks_to_submissions_redirect(request, event, subpath):
99100
event_router.register('talkquestions', question.QuestionViewSet, basename='talkquestion')
100101
event_router.register('answers', question.AnswerViewSet, basename='answer')
101102
event_router.register('question-options', question.AnswerOptionViewSet, basename='question_option')
102-
event_router.register('speaker-information', speaker_information.SpeakerInformationViewSet, basename='speaker_information',)
103+
event_router.register(
104+
'speaker-information',
105+
speaker_information.SpeakerInformationViewSet,
106+
basename='speaker_information',
107+
)
103108

104109
checkinlist_router = routers.DefaultRouter()
105110
checkinlist_router.register(r'positions', checkin.CheckinListPositionViewSet, basename='checkinlistpos')
@@ -126,87 +131,86 @@ def talks_to_submissions_redirect(request, event, subpath):
126131
importlib.import_module(app.name + '.urls')
127132

128133
urlpatterns = [
129-
url(r'^', include(router.urls)),
130-
url(r'^organizers/(?P<organizer>[^/]+)/', include(orga_router.urls)),
131-
url(
132-
r'^organizers/(?P<organizer>[^/]+)/settings/$',
134+
path('', include(router.urls)),
135+
path('organizers/<orgslug:organizer>/', include(orga_router.urls)),
136+
path(
137+
'organizers/<orgslug:organizer>/settings/',
133138
organizer.OrganizerSettingsView.as_view(),
134139
name='organizer.settings',
135140
),
136-
url(
137-
r'^organizers/(?P<organizer>[^/]+)/giftcards/(?P<giftcard>[^/]+)/',
141+
path(
142+
'organizers/<orgslug:organizer>/giftcards/<giftcard>/',
138143
include(giftcard_router.urls),
139144
),
140-
url(
141-
r'^organizers/(?P<organizer>[^/]+)/events/(?P<event>[^/]+)/settings/$',
145+
path(
146+
'organizers/<orgslug:organizer>/events/<slug:event>/settings/',
142147
event.EventSettingsView.as_view(),
143148
name='event.settings',
144149
),
145-
url(
146-
r'^organizers/(?P<organizer>[^/]+)/events/(?P<event>[^/]+)/',
150+
path(
151+
'organizers/<orgslug:organizer>/events/<slug:event>/',
147152
include(event_router.urls),
148153
),
149-
url(
150-
r'^organizers/(?P<organizer>[^/]+)/teams/(?P<team>[^/]+)/',
154+
path(
155+
'organizers/<orgslug:organizer>/teams/<slug:team>/',
151156
include(team_router.urls),
152157
),
153-
url(
154-
r'^organizers/(?P<organizer>[^/]+)/events/(?P<event>[^/]+)/products/(?P<product>[^/]+)/',
158+
path(
159+
'organizers/<orgslug:organizer>/events/<slug:event>/products/<slug:product>/',
155160
include(product_router.urls),
156161
),
157-
url(
158-
r'^organizers/(?P<organizer>[^/]+)/events/(?P<event>[^/]+)/questions/(?P<question>[^/]+)/',
162+
path(
163+
'organizers/<orgslug:organizer>/events/<slug:event>/questions/<slug:question>/',
159164
include(question_router.urls),
160165
),
161-
url(
162-
r'^organizers/(?P<organizer>[^/]+)/events/(?P<event>[^/]+)/checkinlists/(?P<list>[^/]+)/',
166+
path(
167+
'organizers/<orgslug:organizer>/events/<slug:event>/checkinlists/<slug:list>/',
163168
include(checkinlist_router.urls),
164169
),
165-
url(
166-
r'^organizers/(?P<organizer>[^/]+)/checkin/redeem/$',
170+
path(
171+
'organizers/<orgslug:organizer>/checkin/redeem/',
167172
checkin.CheckinRedeemView.as_view(),
168173
name='checkin.redeem',
169174
),
170-
url(
171-
r'^organizers/(?P<organizer>[^/]+)/events/(?P<event>[^/]+)/orders/(?P<order>[^/]+)/',
175+
path(
176+
'organizers/<orgslug:organizer>/events/<slug:event>/orders/<int:order>/',
172177
include(order_router.urls),
173178
),
174-
url(r'^oauth/authorize$', oauth.AuthorizationView.as_view(), name='authorize'),
175-
url(r'^oauth/token$', oauth.TokenView.as_view(), name='token'),
176-
url(r'^oauth/revoke_token$', oauth.RevokeTokenView.as_view(), name='revoke-token'),
177-
url(
178-
r'^device/initialize$',
179+
path('oauth/authorize', oauth.AuthorizationView.as_view(), name='authorize'),
180+
path('oauth/token', oauth.TokenView.as_view(), name='token'),
181+
path('oauth/revoke_token', oauth.RevokeTokenView.as_view(), name='revoke-token'),
182+
path(
183+
'device/initialize',
179184
device.InitializeView.as_view(),
180185
name='device.initialize',
181186
),
182-
url(r'^device/update$', device.UpdateView.as_view(), name='device.update'),
183-
url(r'^device/roll$', device.RollKeyView.as_view(), name='device.roll'),
184-
url(r'^device/revoke$', device.RevokeKeyView.as_view(), name='device.revoke'),
185-
url(
186-
r'^device/eventselection$',
187+
path('device/update', device.UpdateView.as_view(), name='device.update'),
188+
path('device/roll', device.RollKeyView.as_view(), name='device.roll'),
189+
path('device/revoke', device.RevokeKeyView.as_view(), name='device.revoke'),
190+
path(
191+
'device/eventselection',
187192
device.EventSelectionView.as_view(),
188193
name='device.eventselection',
189194
),
190-
url(r'^upload$', upload.UploadView.as_view(), name='upload'),
191-
url(r'^me$', user.MeView.as_view(), name='user.me'),
192-
url(r'^version$', version.VersionView.as_view(), name='version'),
193-
url(
194-
r'^billing-testing/(?P<task>[^/]+)',
195+
path('upload', upload.UploadView.as_view(), name='upload'),
196+
path('me', user.MeView.as_view(), name='user.me'),
197+
path('version', version.VersionView.as_view(), name='version'),
198+
path(
199+
'billing-testing/<task>',
195200
BillingInvoicePreview.as_view(),
196201
name='billing-testing',
197202
),
198-
url(r'^webhook/stripe$', stripe_webhook_view, name='stripe-webhook'),
199-
url(
200-
r'(?P<organizer>[^/]+)/(?P<event>[^/]+)/schedule-public',
203+
path('webhook/stripe', stripe_webhook_view, name='stripe-webhook'),
204+
path(
205+
'<orgslug:organizer>/<slug:event>/schedule-public',
201206
event.talk_schedule_public,
202207
name='event.schedule-public',
203208
),
204-
url(
205-
r'(?P<organizer>[^/]+)/(?P<event>[^/]+)/ticket-check',
209+
path(
210+
'<orgslug:organizer>/<slug:event>/ticket-check',
206211
event.CustomerOrderCheckView.as_view(),
207212
name='event.ticket-check',
208213
),
209-
210214
# We redirect the old pre-filtered /talks/ endpoint to /submissions/
211215
path(
212216
'events/<slug:event>/talks/<path:subpath>',

app/eventyay/config/urls.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from django.conf import settings
44
from django.conf.urls.static import static
55
from django.urls import include, path
6-
from django.urls import re_path as url
76

87
import eventyay.control.urls
98
import eventyay.eventyay_common.urls
@@ -12,32 +11,32 @@
1211
from eventyay.control.views import pages
1312

1413
base_patterns = [
15-
url(
16-
r'^download/(?P<id>[^/]+)/$',
14+
path(
15+
'download/<id>/',
1716
cachedfiles.DownloadView.as_view(),
1817
name='cachedfile.download',
1918
),
20-
url(r'^healthcheck/$', health.healthcheck, name='healthcheck'),
21-
url(r'^redirect/$', redirect.redir_view, name='redirect'),
22-
url(
23-
r'^jsi18n/(?P<lang>[a-zA-Z-_]+)/$',
19+
path('healthcheck/', health.healthcheck, name='healthcheck'),
20+
path('redirect/', redirect.redir_view, name='redirect'),
21+
path(
22+
'jsi18n/<slug:lang>/',
2423
js_catalog.js_catalog,
2524
name='javascript-catalog',
2625
),
27-
url(r'^metrics$', metrics.serve_metrics, name='metrics'),
28-
url(r'^csp_report/$', csp.csp_report, name='csp.report'),
29-
url(r'^js_helpers/states/$', js_helpers.states, name='js_helpers.states'),
30-
# url(r'^api/v1/', include(('eventyay.api.urls', 'eventyayapi'), namespace='api-v1')),
31-
# url(r'^api/$', RedirectView.as_view(url='/api/v1/'), name='redirect-api-version'),
32-
url(r'^accounts/', include('allauth.urls')),
26+
path('metrics/', metrics.serve_metrics, name='metrics'),
27+
path('csp_report/', csp.csp_report, name='csp.report'),
28+
path('js_helpers/states/', js_helpers.states, name='js_helpers.states'),
29+
# path('api/v1/', include(('eventyay.api.urls', 'eventyayapi'), namespace='api-v1')),
30+
# path('api/', RedirectView.as_view(url='/api/v1/'), name='redirect-api-version'),
31+
path('accounts/', include('allauth.urls')),
3332
]
3433

3534
control_patterns = [
36-
url(r'^control/', include((eventyay.control.urls, 'control'))),
35+
path('control/', include((eventyay.control.urls, 'control'))),
3736
]
3837

3938
eventyay_common_patterns = [
40-
url(r'^common/', include((eventyay.eventyay_common.urls, 'common'), namespace='common')),
39+
path('common/', include((eventyay.eventyay_common.urls, 'common'), namespace='common')),
4140
]
4241

4342

0 commit comments

Comments
 (0)