diff --git a/netbox/templates/virtualization/cluster/devices.html b/netbox/templates/virtualization/cluster/devices.html new file mode 100644 index 000000000..271240ed1 --- /dev/null +++ b/netbox/templates/virtualization/cluster/devices.html @@ -0,0 +1,13 @@ +{% extends 'generic/object_children.html' %} +{% load helpers %} + +{% block bulk_delete_controls %} + {{ block.super }} + {% if 'bulk_remove_devices' in actions %} + + {% endif %} +{% endblock bulk_delete_controls %} diff --git a/netbox/templates/virtualization/virtualmachine/interfaces.html b/netbox/templates/virtualization/virtualmachine/interfaces.html new file mode 100644 index 000000000..ee4e76926 --- /dev/null +++ b/netbox/templates/virtualization/virtualmachine/interfaces.html @@ -0,0 +1,13 @@ +{% extends 'generic/object_children.html' %} +{% load helpers %} + +{% block bulk_edit_controls %} + {{ block.super }} + {% if 'bulk_rename' in actions %} + + {% endif %} +{% endblock bulk_edit_controls %} diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index 41eefc8ac..92a91f47e 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -1,3 +1,5 @@ +from collections import defaultdict + from django.contrib import messages from django.db import transaction from django.db.models import Prefetch, Sum @@ -193,7 +195,14 @@ class ClusterDevicesView(generic.ObjectChildrenView): child_model = Device table = DeviceTable filterset = DeviceFilterSet - template_name = 'generic/object_children.html' + template_name = 'virtualization/cluster/devices.html' + actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_remove_devices') + action_perms = defaultdict(set, **{ + 'add': {'add'}, + 'import': {'add'}, + 'bulk_edit': {'change'}, + 'bulk_remove_devices': {'change'}, + }) tab = ViewTab( label=_('Devices'), badge=lambda obj: obj.devices.count(), @@ -346,13 +355,21 @@ class VirtualMachineInterfacesView(generic.ObjectChildrenView): child_model = VMInterface table = tables.VirtualMachineVMInterfaceTable filterset = filtersets.VMInterfaceFilterSet - template_name = 'generic/object_children.html' + template_name = 'virtualization/virtualmachine/interfaces.html' tab = ViewTab( label=_('Interfaces'), badge=lambda obj: obj.interfaces.count(), permission='virtualization.view_vminterface', weight=500 ) + actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_rename') + action_perms = defaultdict(set, **{ + 'add': {'add'}, + 'import': {'add'}, + 'bulk_edit': {'change'}, + 'bulk_delete': {'delete'}, + 'bulk_rename': {'change'}, + }) def get_children(self, request, parent): return parent.interfaces.restrict(request.user, 'view').prefetch_related(