url(r'^program/(?P<pk>\d+)$', ProgramDetail.as_view(), name='program'), url(r'^program/(?P<pk>\d+)/edit$', ProgramUpdate.as_view(), name='program_edit'), url(r'^programs?/speakers?/$', SpeakerList.as_view(), name='speakers'), url(r'^programs?/speakers?/(?P<slug>\w+)$', SpeakerDetail.as_view(), name='speaker'), url(r'^programs?/speakers?/(?P<slug>\w+)/edit$', SpeakerUpdate.as_view(), name='speaker_edit'), url(r'^programs?/schedule/$', schedule, name='schedule'), url(r'^programs?/tutorials/$', TutorialProposalList.as_view(), name='tutorials'), url(r'^programs?/tutorial/(?P<pk>\d+)$', TutorialProposalDetail.as_view(), name='tutorial'), url(r'^programs?/tutorial/(?P<pk>\d+)/join/$', login_required(tutorial_join), name='tutorial-join'), url(r'^cfp/propose/$', login_required(ProposalCreate.as_view()), name='propose'), url(r'^cfp/tutorial-propose/$', login_required(TutorialProposalCreate.as_view()), name='tutorial-propose'), url(r'^profile/proposal/$', login_required(ProposalDetail.as_view()), name='proposal'), url(r'^profile/proposal/edit$', login_required(ProposalUpdate.as_view()), name='proposal-update'), url(r'^profile/tutorial-proposal/edit$', login_required(TutorialProposalUpdate.as_view()), name='tutorial-proposal-update'), url(r'^profile$', login_required(ProfileDetail.as_view()), name='profile'), url(r'^profile/edit$',
url(r'^program/(?P<pk>\d+)/edit$', ProgramUpdate.as_view(), name='program_edit'), url(r'^programs?/speakers?/$', SpeakerList.as_view(), name='speakers'), url(r'^programs?/speakers?/(?P<slug>\w+)$', SpeakerDetail.as_view(), name='speaker'), url(r'^programs?/speakers?/(?P<slug>\w+)/edit$', SpeakerUpdate.as_view(), name='speaker_edit'), url(r'^programs?/schedule/$', schedule, name='schedule'), url(r'^programs?/tutorials/$', TutorialProposalList.as_view(), name='tutorials'), url(r'^programs?/tutorial/(?P<pk>\d+)$', TutorialProposalDetail.as_view(), name='tutorial'), url(r'^programs?/tutorial/(?P<pk>\d+)/join/$', login_required(tutorial_join), name='tutorial-join'), url(r'^cfp/propose/$', login_required(ProposalCreate.as_view()), name='propose'), url(r'^cfp/tutorial-propose/$', login_required(TutorialProposalCreate.as_view()), name='tutorial-propose'), url(r'^profile/proposal/$', login_required(ProposalDetail.as_view()), name='proposal'), url(r'^profile/proposal/edit$', login_required(ProposalUpdate.as_view()),
url(r'^program/(?P<pk>\d+)$', ProgramDetail.as_view(), name='program'), url(r'^program/(?P<pk>\d+)/edit$', ProgramUpdate.as_view(), name='program_edit'), url(r'^programs?/speakers?/$', SpeakerList.as_view(), name='speakers'), url(r'^programs?/speakers?/(?P<slug>\w+)$', SpeakerDetail.as_view(), name='speaker'), url(r'^programs?/speakers?/(?P<slug>\w+)/edit$', SpeakerUpdate.as_view(), name='speaker_edit'), url(r'^programs?/schedule/$', schedule, name='schedule'), url(r'^programs?/tutorials/$', TutorialProposalList.as_view(), name='tutorials'), url(r'^programs?/tutorial/(?P<pk>\d+)$', TutorialProposalDetail.as_view(), name='tutorial'), url(r'^programs?/tutorial/(?P<pk>\d+)/join/$', login_required(tutorial_join), name='tutorial-join'), url(r'^programs?/sprint/(?P<pk>\d+)$', SprintProposalDetail.as_view(), name='sprint'), url(r'^programs?/sprint/(?P<pk>\d+)/join/$', login_required(sprint_join), name='sprint-join'), url(r'^cfp/propose/$', login_required(ProposalCreate.as_view()), name='propose'), url(r'^cfp/tutorial-propose/$', login_required(TutorialProposalCreate.as_view()), name='tutorial-propose'), url(r'^profile/proposal/$', login_required(ProposalDetail.as_view()), name='proposal'), url(r'^cfp/sprint-propose/$', login_required(SprintProposalCreate.as_view()), name='sprint-propose'),