team-3/src/c3nav/asgi.py

40 lines
1.3 KiB
Python
Raw Normal View History

import os
from contextlib import suppress
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
2023-11-09 17:04:55 +01:00
from channels.security.websocket import AllowedHostsOriginValidator
from django.core.asgi import get_asgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "c3nav.settings")
django_asgi = get_asgi_application()
2023-12-02 02:57:41 +01:00
from c3nav.control.middleware import UserPermissionsChannelMiddleware
from c3nav.urls import websocket_urlpatterns
application = ProtocolTypeRouter({
"http": django_asgi,
2023-11-09 17:04:55 +01:00
"websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(
UserPermissionsChannelMiddleware(
URLRouter(websocket_urlpatterns),
),
),
),
})
# optional support for static files via starlette
with suppress(ImportError):
# settings need to be loaded after django init via get_asgi_application
from django.conf import settings
from starlette.applications import Starlette
from starlette.routing import Mount
from starlette.staticfiles import StaticFiles
static_app = ProtocolTypeRouter({
"http": Starlette(routes=[
Mount(settings.STATIC_URL, app=StaticFiles(directory=settings.STATIC_ROOT), name='static'),
Mount('/', app=django_asgi),
]),
})