from django.contrib.auth.decorators import login_required from django.urls import path, re_path from django.views.decorators.clickjacking import xframe_options_exempt from django.views.generic import RedirectView from PyRIGS.decorators import (api_key_required, has_oembed, permission_required_with_403) from . import views urlpatterns = [ # People path('people/', permission_required_with_403('RIGS.view_person')(views.PersonList.as_view()), name='person_list'), path('people/add/', permission_required_with_403('RIGS.add_person')(views.PersonCreate.as_view()), name='person_create'), path('people//', permission_required_with_403('RIGS.view_person')(views.PersonDetail.as_view()), name='person_detail'), path('people//edit/', permission_required_with_403('RIGS.change_person')(views.PersonUpdate.as_view()), name='person_update'), # Organisations path('organisations/', permission_required_with_403('RIGS.view_organisation')(views.OrganisationList.as_view()), name='organisation_list'), path('organisations/add/', permission_required_with_403('RIGS.add_organisation')(views.OrganisationCreate.as_view()), name='organisation_create'), path('organisations//', permission_required_with_403('RIGS.view_organisation')(views.OrganisationDetail.as_view()), name='organisation_detail'), path('organisations//edit/', permission_required_with_403('RIGS.change_organisation')(views.OrganisationUpdate.as_view()), name='organisation_update'), # Venues path('venues/', permission_required_with_403('RIGS.view_venue')(views.VenueList.as_view()), name='venue_list'), path('venues/add/', permission_required_with_403('RIGS.add_venue')(views.VenueCreate.as_view()), name='venue_create'), path('venues//', permission_required_with_403('RIGS.view_venue')(views.VenueDetail.as_view()), name='venue_detail'), path('venues//edit/', permission_required_with_403('RIGS.change_venue')(views.VenueUpdate.as_view()), name='venue_update'), # Rigboard path('rigboard/', login_required(views.RigboardIndex.as_view()), name='rigboard'), path('rigboard/calendar/', login_required()(views.WebCalendar.as_view()), name='web_calendar'), re_path(r'^rigboard/calendar/(?P(month|week|day))/$', login_required()(views.WebCalendar.as_view()), name='web_calendar'), re_path(r'^rigboard/calendar/(?P(month|week|day))/(?P(\d{4}-\d{2}-\d{2}))/$', login_required()(views.WebCalendar.as_view()), name='web_calendar'), path('rigboard/archive/', RedirectView.as_view(permanent=True, pattern_name='event_archive')), path('event//', has_oembed(oembed_view="event_oembed")(views.EventDetail.as_view()), name='event_detail'), path('event/create/', permission_required_with_403('RIGS.add_event')(views.EventCreate.as_view()), name='event_create'), path('event/archive/', login_required()(views.EventArchive.as_view()), name='event_archive'), path('event//embed/', xframe_options_exempt(login_required(login_url='/user/login/embed/')(views.EventEmbed.as_view())), name='event_embed'), path('event//oembed_json/', views.EventOEmbed.as_view(), name='event_oembed'), path('event//print/', permission_required_with_403('RIGS.view_event')(views.EventPrint.as_view()), name='event_print'), path('event//edit/', permission_required_with_403('RIGS.change_event')(views.EventUpdate.as_view()), name='event_update'), path('event//duplicate/', permission_required_with_403('RIGS.add_event')(views.EventDuplicate.as_view()), name='event_duplicate'), # Event H&S path('event/hs/', permission_required_with_403('RIGS.view_riskassessment')(views.HSList.as_view()), name='hs_list'), path('event//ra/', permission_required_with_403('RIGS.add_riskassessment')(views.EventRiskAssessmentCreate.as_view()), name='event_ra'), path('event/ra//', login_required(views.EventRiskAssessmentDetail.as_view()), name='ra_detail'), path('event/ra//edit/', permission_required_with_403('RIGS.change_riskassessment')(views.EventRiskAssessmentEdit.as_view()), name='ra_edit'), path('event/ra//review/', permission_required_with_403('RIGS.review_riskassessment')(views.MarkReviewed.as_view()), name='ra_review', kwargs={'model': 'RiskAssessment'}), path('event/ra//print/', permission_required_with_403('RIGS.view_riskassessment')(views.RAPrint.as_view()), name='ra_print'), path('event//checklist/', permission_required_with_403('RIGS.add_eventchecklist')(views.EventChecklistCreate.as_view()), name='event_ec'), path('event/checklist//', login_required(views.EventChecklistDetail.as_view()), name='ec_detail'), path('event/checklist//edit/', permission_required_with_403('RIGS.change_eventchecklist')(views.EventChecklistEdit.as_view()), name='ec_edit'), path('event/checklist//review/', permission_required_with_403('RIGS.review_eventchecklist')(views.MarkReviewed.as_view()), name='ec_review', kwargs={'model': 'EventChecklist'}), path('event//power/', permission_required_with_403('RIGS.add_powertestrecord')(views.PowerTestCreate.as_view()), name='event_pt'), path('event/power//', login_required(views.PowerTestDetail.as_view()), name='pt_detail'), path('event/power//edit/', permission_required_with_403('RIGS.change_powertestrecord')(views.PowerTestEdit.as_view()), name='pt_edit'), path('event/power//review/', permission_required_with_403('RIGS.review_power')(views.MarkReviewed.as_view()), name='pt_review', kwargs={'model': 'PowerTestRecord'}), path('event//checkin/', login_required(views.EventCheckIn.as_view()), name='event_checkin'), path('event/checkout/', login_required(views.EventCheckOut.as_view()), name='event_checkout'), path('event//checkin/edit/', login_required(views.EventCheckInEdit.as_view()), name='edit_checkin'), path('event//checkin/add/', login_required(views.EventCheckInOverride.as_view()), name='event_checkin_override'), path('event//thread/', permission_required_with_403('RIGS.change_event')(views.CreateForumThread.as_view()), name='event_thread'), path('event/webhook/', views.RecieveForumWebhook.as_view(), name='webhook_recieve'), # Finance path('invoice/', permission_required_with_403('RIGS.view_invoice')(views.InvoiceIndex.as_view()), name='invoice_list'), path('invoice/archive/', permission_required_with_403('RIGS.view_invoice')(views.InvoiceArchive.as_view()), name='invoice_archive'), path('invoice/waiting/', permission_required_with_403('RIGS.add_invoice')(views.InvoiceWaiting.as_view()), name='invoice_waiting'), path('event//invoice/', permission_required_with_403('RIGS.add_invoice')(views.InvoiceEvent.as_view()), name='invoice_event'), path('event//invoice/void', permission_required_with_403('RIGS.add_invoice')(views.InvoiceEvent.as_view()), name='invoice_event_void', kwargs={'void': True}), path('invoice//', permission_required_with_403('RIGS.view_invoice')(views.InvoiceDetail.as_view()), name='invoice_detail'), path('invoice//print/', permission_required_with_403('RIGS.view_invoice')(views.InvoicePrint.as_view()), name='invoice_print'), path('invoice//void/', permission_required_with_403('RIGS.change_invoice')(views.InvoiceVoid.as_view()), name='invoice_void'), path('invoice//delete/', permission_required_with_403('RIGS.change_invoice')(views.InvoiceDelete.as_view()), name='invoice_delete'), path('payment/create/', permission_required_with_403('RIGS.add_payment')(views.PaymentCreate.as_view()), name='payment_create'), path('payment//delete/', permission_required_with_403('RIGS.add_payment')(views.PaymentDelete.as_view()), name='payment_delete'), # Client event authorisation path('event//auth/', permission_required_with_403('RIGS.change_event')(views.EventAuthorisationRequest.as_view()), name='event_authorise_request'), path('event//auth/preview/', permission_required_with_403('RIGS.change_event')(views.EventAuthoriseRequestEmailPreview.as_view()), name='event_authorise_preview'), re_path(r'^event/(?P\d+)/(?P[-:\w]+)/$', views.EventAuthorise.as_view(), name='event_authorise'), re_path(r'^event/(?P\d+)/(?P[-:\w]+)/preview/$', views.EventAuthorise.as_view(preview=True), name='event_authorise_form_preview'), # ICS Calendar - API key authentication re_path(r'^ical/(?P\d+)/(?P\w+)/rigs.ics$', api_key_required(views.CalendarICS()), name="ics_calendar"), # Legacy URLs path('rig/show//', RedirectView.as_view(permanent=True, pattern_name='event_detail')), path('bookings/', RedirectView.as_view(permanent=True, pattern_name='rigboard')), path('bookings/past/', RedirectView.as_view(permanent=True, pattern_name='event_archive')), ]