mirror of
https://github.com/netbox-community/netbox.git
synced 2025-09-06 14:23:36 -06:00
#20048 add get_action_url utility function
This commit is contained in:
parent
976d20f48c
commit
a4975720d4
@ -21,7 +21,7 @@ from utilities.permissions import get_permission_for_model
|
|||||||
from utilities.proxy import resolve_proxies
|
from utilities.proxy import resolve_proxies
|
||||||
from utilities.querydict import dict_to_querydict
|
from utilities.querydict import dict_to_querydict
|
||||||
from utilities.templatetags.builtins.filters import render_markdown
|
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
|
from .utils import register_widget
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
@ -53,7 +53,7 @@ def object_list_widget_supports_model(model: Model) -> bool:
|
|||||||
"""
|
"""
|
||||||
def can_resolve_model_list_view(model: Model) -> bool:
|
def can_resolve_model_list_view(model: Model) -> bool:
|
||||||
try:
|
try:
|
||||||
reverse(get_viewname(model, action='list'))
|
reverse(get_action_url(model, action='list'))
|
||||||
return True
|
return True
|
||||||
except Exception:
|
except Exception:
|
||||||
return False
|
return False
|
||||||
@ -206,7 +206,7 @@ class ObjectCountsWidget(DashboardWidget):
|
|||||||
permission = get_permission_for_model(model, 'view')
|
permission = get_permission_for_model(model, 'view')
|
||||||
if request.user.has_perm(permission):
|
if request.user.has_perm(permission):
|
||||||
try:
|
try:
|
||||||
url = reverse(get_viewname(model, 'list'))
|
url = get_action_url(model, action='list')
|
||||||
except NoReverseMatch:
|
except NoReverseMatch:
|
||||||
url = None
|
url = None
|
||||||
qs = model.objects.restrict(request.user, 'view')
|
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}")
|
logger.debug(f"Dashboard Widget model_class not found: {app_label}:{model_name}")
|
||||||
return
|
return
|
||||||
|
|
||||||
viewname = get_viewname(model, action='list')
|
|
||||||
|
|
||||||
# Evaluate user's permission. Note that this controls only whether the HTMX element is
|
# 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.
|
# embedded on the page: The view itself will also evaluate permissions separately.
|
||||||
permission = get_permission_for_model(model, 'view')
|
permission = get_permission_for_model(model, 'view')
|
||||||
has_permission = request.user.has_perm(permission)
|
has_permission = request.user.has_perm(permission)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
htmx_url = reverse(viewname)
|
htmx_url = get_action_url(model, action='list')
|
||||||
except NoReverseMatch:
|
except NoReverseMatch:
|
||||||
htmx_url = None
|
htmx_url = None
|
||||||
parameters = self.config.get('url_params') or {}
|
parameters = self.config.get('url_params') or {}
|
||||||
@ -297,7 +295,7 @@ class ObjectListWidget(DashboardWidget):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
return render_to_string(self.template_name, {
|
return render_to_string(self.template_name, {
|
||||||
'viewname': viewname,
|
'model_name': model_name,
|
||||||
'has_permission': has_permission,
|
'has_permission': has_permission,
|
||||||
'htmx_url': htmx_url,
|
'htmx_url': htmx_url,
|
||||||
})
|
})
|
||||||
|
@ -7,6 +7,6 @@
|
|||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="text-danger text-center">
|
<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>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
Loading…
Reference in New Issue
Block a user