mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-19 17:59:11 -06:00
Only show relevant links for user permissions
This commit is contained in:
parent
6d48ce4a25
commit
ededa69e4a
@ -90,16 +90,16 @@ class TemplateColumn(tables.TemplateColumn):
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
ActionsMenuItem = namedtuple('ActionsMenuItem', ['title', 'icon'])
|
ActionsMenuItem = namedtuple('ActionsMenuItem', ['title', 'icon', 'permission'])
|
||||||
|
|
||||||
|
|
||||||
class ActionsColumn(tables.Column):
|
class ActionsColumn(tables.Column):
|
||||||
attrs = {'td': {'class': 'text-end noprint'}}
|
attrs = {'td': {'class': 'text-end noprint'}}
|
||||||
empty_values = ()
|
empty_values = ()
|
||||||
_actions = {
|
_actions = {
|
||||||
'edit': ActionsMenuItem('Edit', 'pencil'),
|
'edit': ActionsMenuItem('Edit', 'pencil', 'change'),
|
||||||
'delete': ActionsMenuItem('Delete', 'trash-can-outline'),
|
'delete': ActionsMenuItem('Delete', 'trash-can-outline', 'delete'),
|
||||||
'changelog': ActionsMenuItem('Changelog', 'history'),
|
'changelog': ActionsMenuItem('Changelog', 'history', None),
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, *args, actions=('edit', 'delete', 'changelog'), **kwargs):
|
def __init__(self, *args, actions=('edit', 'delete', 'changelog'), **kwargs):
|
||||||
@ -123,16 +123,21 @@ class ActionsColumn(tables.Column):
|
|||||||
request = getattr(table, 'context', {}).get('request')
|
request = getattr(table, 'context', {}).get('request')
|
||||||
url_appendix = f'?return_url={request.path}' if request else ''
|
url_appendix = f'?return_url={request.path}' if request else ''
|
||||||
|
|
||||||
menu = '<div class="dropdown">' \
|
links = []
|
||||||
'<a class="btn btn-sm btn-outline-secondary dropdown-toggle" href="#" type="button" data-bs-toggle="dropdown"><i class="mdi mdi-wrench"></i></a>' \
|
|
||||||
'<ul class="dropdown-menu">'
|
|
||||||
|
|
||||||
for action, attrs in self.actions.items():
|
for action, attrs in self.actions.items():
|
||||||
viewname = f'{viewname_base}_{action}'
|
permission = f'{model._meta.app_label}.{attrs.permission}_{model._meta.model_name}'
|
||||||
url = reverse(viewname, kwargs={'pk': record.pk})
|
if attrs.permission is None or request.user.has_perm(permission):
|
||||||
menu += f'<li><a class="dropdown-item" href="{url}{url_appendix}"><i class="mdi mdi-{attrs.icon}"></i> {attrs.title}</a></li>'
|
url = reverse(f'{viewname_base}_{action}', kwargs={'pk': record.pk})
|
||||||
|
links.append(f'<li><a class="dropdown-item" href="{url}{url_appendix}">'
|
||||||
|
f'<i class="mdi mdi-{attrs.icon}"></i> {attrs.title}</a></li>')
|
||||||
|
|
||||||
menu += '</ul></div>'
|
if not links:
|
||||||
|
return ''
|
||||||
|
|
||||||
|
menu = f'<div class="dropdown">' \
|
||||||
|
f'<a class="btn btn-sm btn-outline-secondary dropdown-toggle" href="#" type="button" data-bs-toggle="dropdown">' \
|
||||||
|
f'<i class="mdi mdi-wrench"></i></a>' \
|
||||||
|
f'<ul class="dropdown-menu">{"".join(links)}</ul></div>'
|
||||||
|
|
||||||
return mark_safe(menu)
|
return mark_safe(menu)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user