mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-19 05:21:55 -06:00
adds vlan child table to vlan group #13536
This commit is contained in:
parent
f743f2cfb8
commit
a75e8416a4
@ -116,6 +116,12 @@ class VLANGroup(OrganizationalModel):
|
|||||||
return available_vids[0]
|
return available_vids[0]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_child_vlans(self):
|
||||||
|
"""
|
||||||
|
Return all VLANs within this group.
|
||||||
|
"""
|
||||||
|
return VLAN.objects.filter(group=self).order_by('vid')
|
||||||
|
|
||||||
|
|
||||||
class VLAN(PrimaryModel):
|
class VLAN(PrimaryModel):
|
||||||
"""
|
"""
|
||||||
|
@ -897,21 +897,8 @@ class VLANGroupView(generic.ObjectView):
|
|||||||
(VLAN.objects.restrict(request.user, 'view').filter(group=instance), 'group_id'),
|
(VLAN.objects.restrict(request.user, 'view').filter(group=instance), 'group_id'),
|
||||||
)
|
)
|
||||||
|
|
||||||
# TODO: Replace with embedded table
|
|
||||||
vlans = VLAN.objects.restrict(request.user, 'view').filter(group=instance).prefetch_related(
|
|
||||||
Prefetch('prefixes', queryset=Prefix.objects.restrict(request.user)),
|
|
||||||
'tenant', 'site', 'role',
|
|
||||||
).order_by('vid')
|
|
||||||
vlans = add_available_vlans(vlans, vlan_group=instance)
|
|
||||||
|
|
||||||
vlans_table = tables.VLANTable(vlans, user=request.user, exclude=('group',))
|
|
||||||
if request.user.has_perm('ipam.change_vlan') or request.user.has_perm('ipam.delete_vlan'):
|
|
||||||
vlans_table.columns.show('pk')
|
|
||||||
vlans_table.configure(request)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'related_models': related_models,
|
'related_models': related_models,
|
||||||
'vlans_table': vlans_table,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -944,6 +931,30 @@ class VLANGroupBulkDeleteView(generic.BulkDeleteView):
|
|||||||
table = tables.VLANGroupTable
|
table = tables.VLANGroupTable
|
||||||
|
|
||||||
|
|
||||||
|
@register_model_view(VLANGroup, 'vlans')
|
||||||
|
class VLANGroupVLANsView(generic.ObjectChildrenView):
|
||||||
|
queryset = VLANGroup.objects.all()
|
||||||
|
child_model = VLAN
|
||||||
|
table = tables.VLANTable
|
||||||
|
filterset = filtersets.VLANFilterSet
|
||||||
|
template_name = 'generic/object_children.html'
|
||||||
|
tab = ViewTab(
|
||||||
|
label=_('VLANs'),
|
||||||
|
badge=lambda x: x.get_child_vlans().count(),
|
||||||
|
permission='ipam.view_vlan',
|
||||||
|
weight=500
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_children(self, request, parent):
|
||||||
|
return parent.get_child_vlans().restrict(request.user, 'view').prefetch_related(
|
||||||
|
Prefetch('prefixes', queryset=Prefix.objects.restrict(request.user)),
|
||||||
|
'tenant', 'site', 'role',
|
||||||
|
)
|
||||||
|
|
||||||
|
def prep_table_data(self, request, queryset, parent):
|
||||||
|
return add_available_vlans(parent.get_child_vlans(), parent)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# FHRP groups
|
# FHRP groups
|
||||||
#
|
#
|
||||||
|
@ -58,15 +58,4 @@
|
|||||||
{% plugin_right_page object %}
|
{% plugin_right_page object %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
|
||||||
<div class="col col-md-12">
|
|
||||||
<div class="card">
|
|
||||||
<h5 class="card-header">VLANs</h5>
|
|
||||||
<div class="card-body table-responsive">
|
|
||||||
{% render_table vlans_table 'inc/table.html' %}
|
|
||||||
{% include 'inc/paginator.html' with paginator=vlans_table.paginator page=vlans_table.page %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
Loading…
Reference in New Issue
Block a user