mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
Merge branch 'navactive' into 'v4.x'
Errors thrown here cause 404 error handling to fail. 404s cant url resolve. See merge request allianceauth/allianceauth!1598
This commit is contained in:
commit
49fb6c39d5
@ -23,6 +23,7 @@ THE SOFTWARE.
|
||||
"""
|
||||
from django.template import Library
|
||||
from django.urls import resolve
|
||||
from django.urls.exceptions import Resolver404
|
||||
from django.conf import settings
|
||||
import re
|
||||
|
||||
@ -45,19 +46,23 @@ def navactive(request, urls):
|
||||
{% navactive request "view_name another_view_name" %}
|
||||
"""
|
||||
url_list = set(urls.split())
|
||||
|
||||
resolved = resolve(request.path)
|
||||
resolved_urls = set()
|
||||
if resolved.url_name:
|
||||
resolved_urls.add(resolved.url_name)
|
||||
if resolved.namespaces:
|
||||
resolved_urls = resolved_urls.union([f"{namespace}:{resolved.url_name}" for namespace in resolved.namespaces])
|
||||
resolved_urls = resolved_urls.union([f"{namespace}:" for namespace in resolved.namespaces])
|
||||
if getattr(resolved, 'app_name', None):
|
||||
resolved_urls = resolved_urls.union([f"{resolved.app_name}:{resolved.url_name}", f"{resolved.app_name}:"])
|
||||
if getattr(resolved, 'app_names', []):
|
||||
resolved_urls = resolved_urls.union([f"{app_name}:{resolved.url_name}" for app_name in resolved.app_names])
|
||||
resolved_urls = resolved_urls.union([f"{app_name}:" for app_name in resolved.app_names])
|
||||
if url_list and resolved_urls and bool(resolved_urls & url_list):
|
||||
return getattr(settings, "NAVHELPER_ACTIVE_CLASS", "active")
|
||||
try:
|
||||
resolved = resolve(request.path)
|
||||
resolved_urls = set()
|
||||
if resolved.url_name:
|
||||
resolved_urls.add(resolved.url_name)
|
||||
if resolved.namespaces:
|
||||
resolved_urls = resolved_urls.union(
|
||||
[f"{namespace}:{resolved.url_name}" for namespace in resolved.namespaces])
|
||||
resolved_urls = resolved_urls.union([f"{namespace}:" for namespace in resolved.namespaces])
|
||||
if getattr(resolved, 'app_name', None):
|
||||
resolved_urls = resolved_urls.union([f"{resolved.app_name}:{resolved.url_name}", f"{resolved.app_name}:"])
|
||||
if getattr(resolved, 'app_names', []):
|
||||
resolved_urls = resolved_urls.union([f"{app_name}:{resolved.url_name}" for app_name in resolved.app_names])
|
||||
resolved_urls = resolved_urls.union([f"{app_name}:" for app_name in resolved.app_names])
|
||||
if url_list and resolved_urls and bool(resolved_urls & url_list):
|
||||
return getattr(settings, "NAVHELPER_ACTIVE_CLASS", "active")
|
||||
except Resolver404:
|
||||
pass
|
||||
# 404 errors can't url resolve
|
||||
return getattr(settings, "NAVHELPER_NOT_ACTIVE_CLASS", "")
|
||||
|
Loading…
x
Reference in New Issue
Block a user