#20048 add get_action_url utility function

This commit is contained in:
Arthur 2025-08-07 14:18:12 -07:00
parent 976d20f48c
commit a4975720d4
2 changed files with 6 additions and 8 deletions

View File

@ -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,
})

View File

@ -7,6 +7,6 @@
</div>
{% else %}
<div class="text-danger text-center">
<i class="mdi mdi-alert"></i> {% trans "Unable to load content. Invalid view name" %}: <span class="font-monospace">{{ viewname }}</span>
<i class="mdi mdi-alert"></i> {% trans "Unable to load content. Invalid list viewname for:" %} <span class="font-monospace">{{ model_name }}</span>
</div>
{% endif %}