bornhack-website/src/program/urls.py
Thomas Steen Rasmussen 32e9b7c40b
Fix urls handling and other stuff (#249)
* update font-awesome to 5.1 and add fab- and fa-regular icons, fixed #244

* also handle slugs when dealing with SingleObjectMixin CBV views, fixes #248

* add missing trailing slash to bar/menu

* add missing trailing slash on event slugs, fixes #245

* fix a lot of stuff related to proposal URLs. actually display them on speaker and event detail pages. show the urltype icons. better messages on update and delete pages. fix 500 error when reapproving events. fix bug that made urls multiply when reapproving event. fixes #246 and fixes #247
2018-07-17 22:43:16 +02:00

192 lines
6.5 KiB
Python

from django.urls import path, include
from .views import *
app_name = 'program'
urlpatterns = [
path(
'',
ScheduleView.as_view(),
name='schedule_index'
),
path(
'noscript/',
NoScriptScheduleView.as_view(),
name='noscript_schedule_index'
),
path(
'ics/', ICSView.as_view(), name="ics_view"
),
path(
'control/', ProgramControlCenter.as_view(), name="program_control_center"
),
path(
'proposals/', include([
path(
'',
ProposalListView.as_view(),
name='proposal_list',
),
path(
'submit/', include([
path(
'',
CombinedProposalTypeSelectView.as_view(),
name='proposal_combined_type_select',
),
path(
'<slug:event_type_slug>/',
CombinedProposalSubmitView.as_view(),
name='proposal_combined_submit',
),
path(
'<slug:event_type_slug>/select_person/',
CombinedProposalPersonSelectView.as_view(),
name='proposal_combined_person_select',
),
]),
),
path(
'people/', include([
path(
'<uuid:pk>/',
SpeakerProposalDetailView.as_view(),
name='speakerproposal_detail'
),
path(
'<uuid:pk>/update/',
SpeakerProposalUpdateView.as_view(),
name='speakerproposal_update'
),
path(
'<uuid:pk>/delete/',
SpeakerProposalDeleteView.as_view(),
name='speakerproposal_delete'
),
path(
'<uuid:speaker_uuid>/add_event/',
EventProposalTypeSelectView.as_view(),
name='eventproposal_typeselect'
),
path(
'<uuid:speaker_uuid>/add_event/<slug:event_type_slug>/',
EventProposalCreateView.as_view(),
name='eventproposal_create'
),
path(
'<uuid:speaker_uuid>/add_url/',
UrlCreateView.as_view(),
name='speakerproposalurl_create'
),
path(
'<uuid:speaker_uuid>/urls/<uuid:url_uuid>/update/',
UrlUpdateView.as_view(),
name='speakerproposalurl_update'
),
path(
'<uuid:speaker_uuid>/urls/<uuid:url_uuid>/delete/',
UrlDeleteView.as_view(),
name='speakerproposalurl_delete'
),
])
),
path(
'events/', include([
path(
'<uuid:pk>/',
EventProposalDetailView.as_view(),
name='eventproposal_detail'
),
path(
'<uuid:pk>/update/',
EventProposalUpdateView.as_view(),
name='eventproposal_update'
),
path(
'<uuid:pk>/delete/',
EventProposalDeleteView.as_view(),
name='eventproposal_delete'
),
path(
'<uuid:event_uuid>/add_person/',
EventProposalSelectPersonView.as_view(),
name='eventproposal_selectperson'
),
path(
'<uuid:event_uuid>/add_person/new/',
SpeakerProposalCreateView.as_view(),
name='speakerproposal_create'
),
path(
'<uuid:event_uuid>/add_person/<uuid:speaker_uuid>/',
EventProposalAddPersonView.as_view(),
name='eventproposal_addperson'
),
path(
'<uuid:event_uuid>/remove_person/<uuid:speaker_uuid>/',
EventProposalRemovePersonView.as_view(),
name='eventproposal_removeperson'
),
path(
'<uuid:event_uuid>/add_url/',
UrlCreateView.as_view(),
name='eventproposalurl_create'
),
path(
'<uuid:event_uuid>/urls/<uuid:url_uuid>/update/',
UrlUpdateView.as_view(),
name='eventproposalurl_update'
),
path(
'<uuid:event_uuid>/urls/<uuid:url_uuid>/delete/',
UrlDeleteView.as_view(),
name='eventproposalurl_delete'
),
])
),
])
),
path(
'speakers/', include([
path(
'',
SpeakerListView.as_view(),
name='speaker_index'
),
path(
'<slug:slug>/',
SpeakerDetailView.as_view(),
name='speaker_detail'
),
]),
),
path(
'events/',
EventListView.as_view(),
name='event_index'
),
# legacy CFS url kept on purpose to keep old links functional
path(
'call-for-speakers/',
CallForParticipationView.as_view(),
name='call_for_speakers'
),
path(
'call-for-participation/',
CallForParticipationView.as_view(),
name='call_for_participation'
),
path(
'calendar',
ICSView.as_view(),
name='ics_calendar'
),
# this must be the last URL here or the regex will overrule the others
path(
'<slug:slug>/',
EventDetailView.as_view(),
name='event_detail'
),
]