From a4975720d42647b5a5d19d615f0b09bb69db6b93 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 7 Aug 2025 14:18:12 -0700 Subject: [PATCH] #20048 add get_action_url utility function --- netbox/extras/dashboard/widgets.py | 12 +++++------- .../extras/dashboard/widgets/objectlist.html | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/netbox/extras/dashboard/widgets.py b/netbox/extras/dashboard/widgets.py index 2173dc786..92034b521 100644 --- a/netbox/extras/dashboard/widgets.py +++ b/netbox/extras/dashboard/widgets.py @@ -21,7 +21,7 @@ from utilities.permissions import get_permission_for_model from utilities.proxy import resolve_proxies from utilities.querydict import dict_to_querydict from utilities.templatetags.builtins.filters import render_markdown -from utilities.views import get_viewname +from utilities.views import get_action_url from .utils import register_widget __all__ = ( @@ -53,7 +53,7 @@ def object_list_widget_supports_model(model: Model) -> bool: """ def can_resolve_model_list_view(model: Model) -> bool: try: - reverse(get_viewname(model, action='list')) + reverse(get_action_url(model, action='list')) return True except Exception: return False @@ -206,7 +206,7 @@ class ObjectCountsWidget(DashboardWidget): permission = get_permission_for_model(model, 'view') if request.user.has_perm(permission): try: - url = reverse(get_viewname(model, 'list')) + url = get_action_url(model, action='list') except NoReverseMatch: url = None qs = model.objects.restrict(request.user, 'view') @@ -275,15 +275,13 @@ class ObjectListWidget(DashboardWidget): logger.debug(f"Dashboard Widget model_class not found: {app_label}:{model_name}") return - viewname = get_viewname(model, action='list') - # Evaluate user's permission. Note that this controls only whether the HTMX element is # embedded on the page: The view itself will also evaluate permissions separately. permission = get_permission_for_model(model, 'view') has_permission = request.user.has_perm(permission) try: - htmx_url = reverse(viewname) + htmx_url = get_action_url(model, action='list') except NoReverseMatch: htmx_url = None parameters = self.config.get('url_params') or {} @@ -297,7 +295,7 @@ class ObjectListWidget(DashboardWidget): except ValueError: pass return render_to_string(self.template_name, { - 'viewname': viewname, + 'model_name': model_name, 'has_permission': has_permission, 'htmx_url': htmx_url, }) diff --git a/netbox/templates/extras/dashboard/widgets/objectlist.html b/netbox/templates/extras/dashboard/widgets/objectlist.html index 42a1f4e34..20f4fe4b1 100644 --- a/netbox/templates/extras/dashboard/widgets/objectlist.html +++ b/netbox/templates/extras/dashboard/widgets/objectlist.html @@ -7,6 +7,6 @@ {% else %}
- {% trans "Unable to load content. Invalid view name" %}: {{ viewname }} + {% trans "Unable to load content. Invalid list viewname for:" %} {{ model_name }}
{% endif %}