mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 20:40:17 +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.template import Library
|
||||||
from django.urls import resolve
|
from django.urls import resolve
|
||||||
|
from django.urls.exceptions import Resolver404
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import re
|
import re
|
||||||
|
|
||||||
@ -45,19 +46,23 @@ def navactive(request, urls):
|
|||||||
{% navactive request "view_name another_view_name" %}
|
{% navactive request "view_name another_view_name" %}
|
||||||
"""
|
"""
|
||||||
url_list = set(urls.split())
|
url_list = set(urls.split())
|
||||||
|
try:
|
||||||
resolved = resolve(request.path)
|
resolved = resolve(request.path)
|
||||||
resolved_urls = set()
|
resolved_urls = set()
|
||||||
if resolved.url_name:
|
if resolved.url_name:
|
||||||
resolved_urls.add(resolved.url_name)
|
resolved_urls.add(resolved.url_name)
|
||||||
if resolved.namespaces:
|
if resolved.namespaces:
|
||||||
resolved_urls = resolved_urls.union([f"{namespace}:{resolved.url_name}" for namespace in resolved.namespaces])
|
resolved_urls = resolved_urls.union(
|
||||||
resolved_urls = resolved_urls.union([f"{namespace}:" for namespace in resolved.namespaces])
|
[f"{namespace}:{resolved.url_name}" for namespace in resolved.namespaces])
|
||||||
if getattr(resolved, 'app_name', None):
|
resolved_urls = resolved_urls.union([f"{namespace}:" for namespace in resolved.namespaces])
|
||||||
resolved_urls = resolved_urls.union([f"{resolved.app_name}:{resolved.url_name}", f"{resolved.app_name}:"])
|
if getattr(resolved, 'app_name', None):
|
||||||
if getattr(resolved, 'app_names', []):
|
resolved_urls = resolved_urls.union([f"{resolved.app_name}:{resolved.url_name}", f"{resolved.app_name}:"])
|
||||||
resolved_urls = resolved_urls.union([f"{app_name}:{resolved.url_name}" for app_name in resolved.app_names])
|
if getattr(resolved, 'app_names', []):
|
||||||
resolved_urls = resolved_urls.union([f"{app_name}:" for app_name in resolved.app_names])
|
resolved_urls = resolved_urls.union([f"{app_name}:{resolved.url_name}" for app_name in resolved.app_names])
|
||||||
if url_list and resolved_urls and bool(resolved_urls & url_list):
|
resolved_urls = resolved_urls.union([f"{app_name}:" for app_name in resolved.app_names])
|
||||||
return getattr(settings, "NAVHELPER_ACTIVE_CLASS", "active")
|
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", "")
|
return getattr(settings, "NAVHELPER_NOT_ACTIVE_CLASS", "")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user