Fix cluster devices & VM interfaces views

This commit is contained in:
Jeremy Stretch 2023-08-08 15:51:36 -04:00
parent 297479d32e
commit 9d6688115e
3 changed files with 45 additions and 2 deletions

View File

@ -0,0 +1,13 @@
{% extends 'generic/object_children.html' %}
{% load helpers %}
{% block bulk_delete_controls %}
{{ block.super }}
{% if 'bulk_remove_devices' in actions %}
<button type="submit" name="_remove"
formaction="{% url 'virtualization:cluster_remove_devices' pk=object.pk %}?return_url={{ return_url }}"
class="btn btn-danger btn-sm">
<span class="mdi mdi-trash-can-outline" aria-hidden="true"></span> Remove Devices
</button>
{% endif %}
{% endblock bulk_delete_controls %}

View File

@ -0,0 +1,13 @@
{% extends 'generic/object_children.html' %}
{% load helpers %}
{% block bulk_edit_controls %}
{{ block.super }}
{% if 'bulk_rename' in actions %}
<button type="submit" name="_rename"
formaction="{% url 'virtualization:vminterface_bulk_rename' %}?return_url={{ return_url }}"
class="btn btn-outline-warning btn-sm">
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename
</button>
{% endif %}
{% endblock bulk_edit_controls %}

View File

@ -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(