diff --git a/ietf/dbtemplate/urls.py b/ietf/dbtemplate/urls.py index c6e14ff00..d2d03977d 100644 --- a/ietf/dbtemplate/urls.py +++ b/ietf/dbtemplate/urls.py @@ -2,6 +2,6 @@ from django.conf.urls import patterns, url urlpatterns = patterns('ietf.dbtemplate.views', - url(r'^(?P[\w.@+-]+)/$', 'template_list', name='template_list'), - url(r'^(?P[\w.@+-]+)/(?P[\d]+)/$', 'template_edit', name='template_edit'), + url(r'^(?P[-a-z0-9]+)/$', 'template_list', name='template_list'), + url(r'^(?P[-a-z0-9]+)/(?P[\d]+)/$', 'template_edit', name='template_edit'), ) diff --git a/ietf/group/urls.py b/ietf/group/urls.py index 1391c4fd0..6eefb4107 100644 --- a/ietf/group/urls.py +++ b/ietf/group/urls.py @@ -11,7 +11,7 @@ urlpatterns = patterns('', (r'^concluded/$', 'ietf.group.views.concluded_groups'), (r'^email-aliases/$', 'ietf.group.views.email_aliases'), (r'^all-status/$', 'ietf.group.views.all_status'), - (r'^(?P[a-zA-Z0-9-._]+)/$', 'ietf.group.views.group_home', None, "group_home"), - (r'^(?P[a-zA-Z0-9-._]+)/', include('ietf.group.urls_info_details')), + (r'^(?P[-a-z0-9]+)/$', 'ietf.group.views.group_home', None, "group_home"), + (r'^(?P[-a-z0-9]+)/', include('ietf.group.urls_info_details')), ) diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py index 815e804d1..7f957f417 100644 --- a/ietf/meeting/urls.py +++ b/ietf/meeting/urls.py @@ -7,7 +7,7 @@ from ietf.meeting import views from ietf.meeting import ajax safe_for_all_meeting_types = [ - url(r'^session/(?P[A-Za-z0-9_\-\+]+)/$', views.session_details), + url(r'^session/(?P[-a-z0-9]+)/$', views.session_details), url(r'^session/(?P\d+)/drafts$', views.add_session_drafts), ] @@ -69,16 +69,9 @@ type_ietf_only_patterns_id_optional = [ ] urlpatterns = [ + # First patterns which start with unique strings + url(r'^$', views.current_materials), url(r'^ajax/get-utc/$', views.ajax_get_utc), - url(r'^requests.html$', RedirectView.as_view(url='/meeting/requests', permanent=True)), - url(r'^(?P\d+)/requests.html$', RedirectView.as_view(url='/meeting/%(num)s/requests', permanent=True)), - url(r'^(?P[A-Za-z0-9._+-]+)/', include(safe_for_all_meeting_types)), - # The optionals have to go first, otherwise the agenda/(owner)/(name)/ patterns match things they shouldn't - url(r'^(?:(?P\d+)/)?', include(type_ietf_only_patterns_id_optional)), - url(r'^(?P\d+)/', include(type_ietf_only_patterns)), - url(r'^(?Pinterim-[a-z0-9-]+)/', include(type_ietf_only_patterns)), - url(r'^upcoming/$', views.upcoming), - url(r'^upcoming.ics/$', views.upcoming_ical), url(r'^interim/announce/$', views.interim_announce), url(r'^interim/announce/(?P[A-Za-z0-9._+-]+)/$', views.interim_send_announcement), url(r'^interim/request/$', views.interim_request), @@ -86,6 +79,17 @@ urlpatterns = [ url(r'^interim/request/(?P[A-Za-z0-9._+-]+)/edit/$', views.interim_request_edit), url(r'^interim/request/(?P[A-Za-z0-9._+-]+)/cancel/$', views.interim_request_cancel), url(r'^interim/pending/$', views.interim_pending), - url(r'^$', views.current_materials), + url(r'^requests.html$', RedirectView.as_view(url='/meeting/requests', permanent=True)), + url(r'^upcoming/$', views.upcoming), + url(r'^upcoming.ics/$', views.upcoming_ical), + # Then patterns from more specific to less + url(r'^(?Pinterim-[a-z0-9-]+)/', include(type_ietf_only_patterns)), + url(r'^(?P\d+)/requests.html$', RedirectView.as_view(url='/meeting/%(num)s/requests', permanent=True)), + # The optionals have to go first of these two, otherwise the agenda/(owner)/(name)/ patterns match things they shouldn't + url(r'^(?:(?P\d+)/)?', include(type_ietf_only_patterns_id_optional)), + url(r'^(?P\d+)/', include(type_ietf_only_patterns)), + # + url(r'^(?P\d+)/', include(safe_for_all_meeting_types)), + url(r'^(?Pinterim-[a-z0-9-]+)/', include(safe_for_all_meeting_types)), ] diff --git a/ietf/secr/groups/urls.py b/ietf/secr/groups/urls.py index 41793b701..edb15d9d2 100644 --- a/ietf/secr/groups/urls.py +++ b/ietf/secr/groups/urls.py @@ -6,11 +6,11 @@ urlpatterns = patterns('ietf.secr.groups.views', url(r'^blue-dot-report/$', 'blue_dot', name='groups_blue_dot'), url(r'^search/$', 'search', name='groups_search'), #(r'^ajax/get_ads/$', 'get_ads'), - url(r'^(?P[A-Za-z0-9_\-\+\.]+)/$', 'view', name='groups_view'), - url(r'^(?P[A-Za-z0-9_\-\+\.]+)/delete/(?P\d{1,6})/$', 'delete_role', name='groups_delete_role'), - url(r'^(?P[A-Za-z0-9_\-\+\.]+)/charter/$', 'charter', name='groups_charter'), - url(r'^(?P[A-Za-z0-9_\-\+\.]+)/edit/$', 'edit', name='groups_edit'), - url(r'^(?P[A-Za-z0-9_\-\+\.]+)/gm/$', 'view_gm', name='groups_view_gm'), - url(r'^(?P[A-Za-z0-9_\-\+\.]+)/gm/edit/$', 'edit_gm', name='groups_edit_gm'), - url(r'^(?P[A-Za-z0-9_\-\+\.]+)/people/$', 'people', name='groups_people'), + url(r'^(?P[-a-z0-9]+)/$', 'view', name='groups_view'), + url(r'^(?P[-a-z0-9]+)/delete/(?P\d{1,6})/$', 'delete_role', name='groups_delete_role'), + url(r'^(?P[-a-z0-9]+)/charter/$', 'charter', name='groups_charter'), + url(r'^(?P[-a-z0-9]+)/edit/$', 'edit', name='groups_edit'), + url(r'^(?P[-a-z0-9]+)/gm/$', 'view_gm', name='groups_view_gm'), + url(r'^(?P[-a-z0-9]+)/gm/edit/$', 'edit_gm', name='groups_edit_gm'), + url(r'^(?P[-a-z0-9]+)/people/$', 'people', name='groups_people'), ) diff --git a/ietf/secr/meetings/urls.py b/ietf/secr/meetings/urls.py index f00c2c42a..ad0ad399c 100644 --- a/ietf/secr/meetings/urls.py +++ b/ietf/secr/meetings/urls.py @@ -20,6 +20,6 @@ urlpatterns = patterns('ietf.secr.meetings.views', url(r'^(?P\d{1,6})/(?P[A-Za-z0-9_\-]+)/times/delete/(?P