|
7 | 7 | from ietf.meeting import ajax |
8 | 8 |
|
9 | 9 | safe_for_all_meeting_types = [ |
| 10 | + url(r'^session/(?P<acronym>[A-Za-z0-9_\-\+]+)/$', views.session_details), |
10 | 11 | ] |
11 | 12 |
|
12 | 13 | type_ietf_only_patterns = [ |
|
37 | 38 | url(r'^sessions.json', ajax.sessions_json), |
38 | 39 | url(r'^session/(?P<sessionid>\d+).json', ajax.session_json), |
39 | 40 | url(r'^session/(?P<sessionid>\d+)/constraints.json', ajax.session_constraints), |
40 | | - url(r'^session/(?P<acronym>[A-Za-z0-9_\-\+]+)/$', views.session_details), |
41 | 41 | url(r'^constraint/(?P<constraintid>\d+).json', ajax.constraint_json), |
42 | 42 | url(r'^json$', ajax.meeting_json), |
43 | 43 | ] |
|
61 | 61 | url(r'^(?P<meeting_num>\d+)/materials.html$', views.materials), |
62 | 62 | url(r'^requests.html$', RedirectView.as_view(url='/meeting/requests', permanent=True)), |
63 | 63 | url(r'^(?P<num>\d+)/requests.html$', RedirectView.as_view(url='/meeting/%(num)s/requests', permanent=True)), |
| 64 | + url(r'^(?P<num>[A-Za-z0-9._+-]+)/', include(safe_for_all_meeting_types)), |
64 | 65 | # The optionals have to go first, otherwise the agenda/(owner)/(name)/ patterns match things they shouldn't |
65 | 66 | url(r'^(?:(?P<num>\d+)/)?', include(type_ietf_only_patterns_id_optional)), |
66 | 67 | url(r'^(?P<num>\d+)/', include(type_ietf_only_patterns)), |
|
0 commit comments