diff --git a/greg/api/urls.py b/greg/api/urls.py index c20513efc8e5e216945fc5e20ab8518c1859abf2..a2c98d41ba310ce9dbba1f4672a56d103206fc37 100644 --- a/greg/api/urls.py +++ b/greg/api/urls.py @@ -13,7 +13,7 @@ from greg.api.views.person import ( from greg.api.views.role_type import RoleTypeViewSet from greg.api.views.sponsor import SponsorViewSet, SponsorGuestsViewSet -router = DefaultRouter() +router = DefaultRouter(trailing_slash=False) router.register(r"persons", PersonViewSet, basename="person") router.register(r"roletypes", RoleTypeViewSet, basename="roletype") router.register(r"consenttypes", ConsentTypeViewSet, basename="consenttype") @@ -23,33 +23,34 @@ router.register(r"orgunit", OrganizationalUnitViewSet, basename="orgunit") urlpatterns = router.urls +# Allowing trailing slashes to be optional for the URLs below urlpatterns += [ re_path( - r"^persons/(?P<person_id>[0-9]+)/roles/$", + r"^persons/(?P<person_id>[0-9]+)/roles/?$", RoleViewSet.as_view({"get": "list", "post": "create"}), name="person_role-list", ), re_path( - r"^persons/(?P<person_id>[0-9]+)/roles/(?P<id>[0-9]+)/$", + r"^persons/(?P<person_id>[0-9]+)/roles/(?P<id>[0-9]+)/?$", RoleViewSet.as_view( {"get": "retrieve", "patch": "partial_update", "delete": "destroy"} ), name="person_role-detail", ), re_path( - r"^persons/(?P<person_id>[0-9]+)/identities/$", + r"^persons/(?P<person_id>[0-9]+)/identities/?$", IdentityViewSet.as_view({"get": "list", "post": "create"}), name="person_identity-list", ), re_path( - r"^persons/(?P<person_id>[0-9]+)/identities/(?P<id>[0-9]+)$", + r"^persons/(?P<person_id>[0-9]+)/identities/(?P<id>[0-9]+)/?$", IdentityViewSet.as_view( {"get": "retrieve", "delete": "destroy", "patch": "partial_update"} ), name="person_identity-detail", ), re_path( - r"^sponsors/(?P<sponsor_id>[0-9]+)/guests/$", + r"^sponsors/(?P<sponsor_id>[0-9]+)/guests/?$", SponsorGuestsViewSet.as_view({"get": "list"}), name="sponsor_guests-list", ),