MAKENTNU/web

View on GitHub
src/internal/urls.py

Summary

Maintainability
A
0 mins
Test Coverage
from decorator_include import decorator_include
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
from django.urls import include, path
from django.views.generic import TemplateView

from util.url_utils import ckeditor_uploader_urls, debug_toolbar_urls, logout_urls, permission_required_else_denied
from . import views


urlpatterns = [
    path("robots.txt", TemplateView.as_view(template_name='internal/robots.txt', content_type='text/plain')),
    path(".well-known/security.txt", TemplateView.as_view(template_name='web/security.txt', content_type='text/plain')),

    *debug_toolbar_urls(),
    path("i18n/", decorator_include(permission_required_else_denied('internal.is_internal'), 'django.conf.urls.i18n')),
    *static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT),  # For development only; Nginx is used in production

    *ckeditor_uploader_urls(),
]
urlpatterns += logout_urls()

committee_bulletin_urlpatterns = [
    views.CommitteeBulletinBoardView.get_path('dev-board'),
    views.CommitteeBulletinBoardView.get_path('event-board'),
    views.CommitteeBulletinBoardView.get_path('mentor-board'),
    views.CommitteeBulletinBoardView.get_path('pr-board'),
]

internal_content_box_urlpatterns = [
    path("<int:pk>/change/", views.InternalContentBoxUpdateView.as_view(), name='content_box_update'),
]

change_status_of_specific_member_urlpatterns = [
    path("", views.MemberStatusUpdateView.as_view(), name='member_status_update'),
    path("quit/", views.MemberQuitView.as_view(), name='member_quit'),
    path("retire/", views.MemberRetireView.as_view(), name='member_retire'),
]
change_specific_member_urlpatterns = [
    path("", views.MemberUpdateView.as_view(), name='member_update'),
    path("status/", include(change_status_of_specific_member_urlpatterns)),
]
specific_member_urlpatterns = [
    path("", views.MemberListView.as_view(), name='member_detail'),
    path("change/", include(change_specific_member_urlpatterns)),
    path("access/<int:system_access_pk>/change/", views.SystemAccessUpdateView.as_view(), name='system_access_update'),
]
member_urlpatterns = [
    path("", views.MemberListView.as_view(), name='member_list'),
    path("add/", views.MemberCreateView.as_view(), name='member_create'),
    path("<int:pk>/", include(specific_member_urlpatterns)),
]

specific_secret_urlpatterns = [
    path("change/", views.SecretUpdateView.as_view(), name='secret_update'),
    path("delete/", views.SecretDeleteView.as_view(), name='secret_delete'),
]
secret_urlpatterns = [
    path("", views.SecretListView.as_view(), name='secret_list'),
    path("add/", views.SecretCreateView.as_view(), name='secret_create'),
    path("<int:pk>/", include(specific_secret_urlpatterns)),
]

specific_quote_urlpatterns = [
    path("change/", views.QuoteUpdateView.as_view(), name='quote_update'),
    path("delete/", views.QuoteDeleteView.as_view(), name='quote_delete'),
]
quote_urlpatterns = [
    path("", views.QuoteListView.as_view(), name='quote_list'),
    path("add/", views.QuoteCreateView.as_view(), name='quote_create'),
    path("<int:pk>/", include(specific_quote_urlpatterns)),
]

internal_urlpatterns = [
    path("", views.HomeView.as_view(url_name='home'), name='home'),
    path("bulletins/", include(committee_bulletin_urlpatterns)),
    # The proper `url_name` for this would be `MAKE-history`, but the validator of the model's field requires it to be lowercase
    views.InternalContentBoxDetailView.get_path('make-history'),
    path("contentbox/", include(internal_content_box_urlpatterns)),

    path("members/", decorator_include(permission_required_else_denied('internal.view_member'), member_urlpatterns)),
    path("secrets/", decorator_include(permission_required_else_denied('internal.view_secret'), secret_urlpatterns)),
    path("quotes/", decorator_include(permission_required_else_denied('internal.view_quote'), quote_urlpatterns)),
]

urlpatterns += i18n_patterns(
    path("", decorator_include(permission_required_else_denied('internal.is_internal'), internal_urlpatterns)),

    prefix_default_language=False,
)