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:
Ariel Rin 2024-02-24 04:42:48 +00:00
commit 49fb6c39d5

View File

@ -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,13 +46,14 @@ def navactive(request, urls):
{% navactive request "view_name another_view_name" %}
"""
url_list = set(urls.split())
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}:{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}:"])
@ -60,4 +62,7 @@ def navactive(request, urls):
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", "")