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/power//print/", permission_required_with_403("RIGS.view_powertestrecord")(views.PowerPrint.as_view()), name="pt_print", ), 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.InvoiceDashboard.as_view()), name="invoice_dashboard", ), path( "invoice/outstanding", permission_required_with_403("RIGS.view_invoice")(views.InvoiceOutstanding.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")), ]