# Copyright The IETF Trust 2007, All Rights Reserved from django.conf.urls import url, include from django.views.generic import RedirectView 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\d+)/drafts$', views.add_session_drafts), ] type_ietf_only_patterns = [ url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+)/edit$', views.edit_agenda), url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+)/details$', views.edit_agenda_properties), url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+)/delete$', views.delete_schedule), url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+)/make_official$', views.make_schedule_official), # The following view is broken? url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+).(?P.html)?/?$', views.agenda), url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+)/permissions$', ajax.agenda_permission_api), url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+)/session/(?P\d+).json$', ajax.assignment_json), url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+)/sessions.json$', ajax.assignments_json), url(r'^agenda/(?P[-A-Za-z0-9\'+._]+@[A-Za-z0-9-._]+)/(?P[A-Za-z0-9-:_]+).json$', ajax.agenda_infourl), url(r'^agenda/by-room$', views.agenda_by_room), url(r'^agenda/by-type$', views.agenda_by_type), url(r'^agenda/by-type/(?P[a-z]+)$', views.agenda_by_type), url(r'^agenda/by-type/(?P[a-z]+)/ics$', views.agenda_by_type_ics), url(r'^agendas/list$', views.list_agendas, name='meeting_list_agendas'), url(r'^agendas/edit$', RedirectView.as_view(pattern_name='meeting_list_agendas', permanent=True)), url(r'^timeslots/edit$', views.edit_timeslots), url(r'^rooms$', ajax.timeslot_roomsurl), url(r'^room/(?P\d+).json$', ajax.timeslot_roomurl), url(r'^room/(?P\d+)(?:.html)?/?$', views.edit_roomurl), url(r'^timeslots$', ajax.timeslot_slotsurl), url(r'^timeslots.json$', ajax.timeslot_slotsurl), url(r'^timeslot/(?P\d+).json$', ajax.timeslot_sloturl), url(r'^agendas$', ajax.agenda_infosurl), url(r'^agendas.json$', ajax.agenda_infosurl), url(r'^agenda/(?P[A-Za-z0-9-]+)-drafts.pdf$', views.session_draft_pdf), url(r'^agenda/(?P[A-Za-z0-9-]+)-drafts.tgz$', views.session_draft_tarfile), url(r'^agenda/(?P[A-Za-z0-9-]+)/?$', views.session_agenda), url(r'^sessions.json', ajax.sessions_json), url(r'^session/(?P\d+).json', ajax.session_json), url(r'^session/(?P\d+)/constraints.json', ajax.session_constraints), url(r'^constraint/(?P\d+).json', ajax.constraint_json), url(r'^json$', ajax.meeting_json), ] type_ietf_only_patterns_id_optional = [ url(r'^agenda(-utc)?(?P.html)?/?$', views.agenda), url(r'^agenda(?P.txt)$', views.agenda), url(r'^agenda(?P.csv)$', views.agenda), url(r'^agenda/edit$', views.edit_agenda), url(r'^requests$', views.meeting_requests), url(r'^agenda/agenda.ics$', views.ical_agenda), url(r'^agenda.ics$', views.ical_agenda), url(r'^agenda/week-view(?:.html)?/?$', views.week_view), url(r'^agenda/room-view(?:.html)?/?$', views.room_view), url(r'^week-view(?:.html)?/?$', views.week_view), url(r'^room-view(?:.html)?/$', views.room_view), url(r'^materials(?:.html)?/$', views.materials), ] urlpatterns = [ 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'^$', views.current_materials), ]