mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
86 lines
2.6 KiB
Python
86 lines
2.6 KiB
Python
from collections.abc import Callable, Iterable
|
|
|
|
from django.conf import settings
|
|
from django.contrib import admin
|
|
from django.urls import URLPattern, include, path
|
|
from django.views.generic.base import TemplateView
|
|
|
|
import esi.urls
|
|
|
|
import allianceauth.authentication.urls
|
|
import allianceauth.authentication.views
|
|
import allianceauth.groupmanagement.urls
|
|
import allianceauth.notifications.urls
|
|
import allianceauth.services.urls
|
|
from allianceauth import NAME, views
|
|
from allianceauth.authentication import hmac_urls
|
|
from allianceauth.authentication.decorators import decorate_url_patterns, main_character_required
|
|
from allianceauth.hooks import get_hooks
|
|
|
|
admin.site.site_header = NAME
|
|
|
|
|
|
def urls_from_apps(
|
|
apps_hook_functions: Iterable[Callable], public_views_allowed: list[str]
|
|
) -> list[URLPattern]:
|
|
"""Return urls from apps and add default decorators."""
|
|
|
|
url_patterns = []
|
|
allowed_apps = set(public_views_allowed)
|
|
for app_hook_function in apps_hook_functions:
|
|
url_hook = app_hook_function()
|
|
app_pattern = url_hook.include_pattern
|
|
excluded_views = (
|
|
url_hook.excluded_views
|
|
if app_pattern.app_name in allowed_apps
|
|
else None
|
|
)
|
|
url_patterns += [
|
|
path(
|
|
"",
|
|
decorate_url_patterns(
|
|
[app_pattern], main_character_required, excluded_views
|
|
)
|
|
)
|
|
]
|
|
|
|
return url_patterns
|
|
|
|
|
|
# Functional/Untranslated URL's
|
|
urlpatterns = [
|
|
# Locale
|
|
path('i18n/', include('django.conf.urls.i18n')),
|
|
|
|
# Authentication
|
|
path('', include(allianceauth.authentication.urls)),
|
|
path('account/login/', TemplateView.as_view(template_name='public/login.html'), name='auth_login_user'),
|
|
path('account/', include(hmac_urls)),
|
|
|
|
# Admin urls
|
|
path('admin/', admin.site.urls),
|
|
|
|
# SSO
|
|
path('sso/', include((esi.urls, 'esi'), namespace='esi')),
|
|
path('sso/login', allianceauth.authentication.views.sso_login, name='auth_sso_login'),
|
|
|
|
# Notifications
|
|
path('', include(allianceauth.notifications.urls)),
|
|
|
|
# Groups
|
|
path('', include(allianceauth.groupmanagement.urls)),
|
|
|
|
# Services
|
|
path('', decorate_url_patterns(allianceauth.services.urls.urlpatterns, main_character_required)),
|
|
|
|
# Night mode
|
|
path('night/', views.NightModeRedirectView.as_view(), name='nightmode'),
|
|
|
|
# Theme Change
|
|
path('theme/', views.ThemeRedirectView.as_view(), name='theme')
|
|
]
|
|
|
|
url_hooks = get_hooks("url_hook")
|
|
public_views_allows = getattr(settings, "APPS_WITH_PUBLIC_VIEWS", [])
|
|
urlpatterns += urls_from_apps(url_hooks, public_views_allows)
|