diff --git a/src/servala/core/middleware.py b/src/servala/core/middleware.py new file mode 100644 index 0000000..07ebe4a --- /dev/null +++ b/src/servala/core/middleware.py @@ -0,0 +1,22 @@ +from django.shortcuts import get_object_or_404 +from django.urls import resolve + +from servala.core.models import Organization + + +class OrganizationMiddleware: + + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + url = resolve(request.path_info) + + organization_slug = url.kwargs.get("organization") + if organization_slug: + pk = organization_slug.rsplit("-", maxsplit=1)[-1] + request.organization = get_object_or_404(Organization, pk=pk) + else: + request.organization = None + + return self.get_response(request) diff --git a/src/servala/frontend/context_processors.py b/src/servala/frontend/context_processors.py index 1a180d8..1ff2a14 100644 --- a/src/servala/frontend/context_processors.py +++ b/src/servala/frontend/context_processors.py @@ -2,4 +2,4 @@ def add_organizations(request): if not request.user.is_authenticated: return {"user_organizations": []} - return {"user_organizations": request.user.organizations.all()} + return {"user_organizations": request.user.organizations.all().order_by("name")} diff --git a/src/servala/frontend/templates/includes/sidebar.html b/src/servala/frontend/templates/includes/sidebar.html index 1380052..ae08b51 100644 --- a/src/servala/frontend/templates/includes/sidebar.html +++ b/src/servala/frontend/templates/includes/sidebar.html @@ -5,7 +5,7 @@