From 712567cabcb03a84dfe6342a2d41f5f61c72351b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 15 Dec 2016 16:56:43 -0500 Subject: [PATCH] Closes #613: Added prefixes column to VLAN list; added VLAN column to prefix list --- netbox/ipam/tables.py | 26 ++++++++++++++++++++++---- netbox/ipam/views.py | 4 ++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/netbox/ipam/tables.py b/netbox/ipam/tables.py index 81953a348..8715801eb 100644 --- a/netbox/ipam/tables.py +++ b/netbox/ipam/tables.py @@ -58,6 +58,10 @@ PREFIX_LINK_BRIEF = """ """ +PREFIX_ROLE_LINK = """ +{{ record.role }} +""" + IPADDRESS_LINK = """ {% if record.pk %} {{ record.address }} @@ -86,6 +90,18 @@ STATUS_LABEL = """ {% endif %} """ +VLAN_PREFIXES = """ +{% for prefix in record.prefixes.all %} + {{ prefix }}{% if not forloop.last %}
{% endif %} +{% empty %} + — +{% endfor %} +""" + +VLAN_ROLE_LINK = """ +{{ record.role }} +""" + VLANGROUP_ACTIONS = """ {% if perms.ipam.change_vlangroup %} @@ -193,12 +209,13 @@ class PrefixTable(BaseTable): vrf = tables.TemplateColumn(VRF_LINK, verbose_name='VRF') tenant = tables.TemplateColumn(TENANT_LINK, verbose_name='Tenant') site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') - role = tables.Column(verbose_name='Role') + vlan = tables.LinkColumn('ipam:vlan', args=[Accessor('vlan.pk')], verbose_name='VLAN') + role = tables.TemplateColumn(PREFIX_ROLE_LINK, verbose_name='Role') description = tables.Column(orderable=False, verbose_name='Description') class Meta(BaseTable.Meta): model = Prefix - fields = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'role', 'description') + fields = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'vlan', 'role', 'description') row_attrs = { 'class': lambda record: 'success' if not record.pk else '', } @@ -281,10 +298,11 @@ class VLANTable(BaseTable): site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') group = tables.Column(accessor=Accessor('group.name'), verbose_name='Group') name = tables.Column(verbose_name='Name') + prefixes = tables.TemplateColumn(VLAN_PREFIXES, orderable=False, verbose_name='Prefixes') tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')], verbose_name='Tenant') status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status') - role = tables.Column(verbose_name='Role') + role = tables.TemplateColumn(VLAN_ROLE_LINK, verbose_name='Role') class Meta(BaseTable.Meta): model = VLAN - fields = ('pk', 'vid', 'site', 'group', 'name', 'tenant', 'status', 'role') + fields = ('pk', 'vid', 'site', 'group', 'name', 'prefixes', 'tenant', 'status', 'role') diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index a419d2cd8..f7a851572 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -370,7 +370,7 @@ class RoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): # class PrefixListView(ObjectListView): - queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'role') + queryset = Prefix.objects.select_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role') filter = filters.PrefixFilter filter_form = forms.PrefixFilterForm table = tables.PrefixTable @@ -682,7 +682,7 @@ class VLANGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): # class VLANListView(ObjectListView): - queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role') + queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role').prefetch_related('prefixes') filter = filters.VLANFilter filter_form = forms.VLANFilterForm table = tables.VLANTable