From 725e3cdbf3a304deaf62f4cde7871c256336cb76 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 28 Apr 2020 16:20:11 -0400 Subject: [PATCH] Extend circuits tables to include all relevant model fields --- netbox/circuits/tables.py | 25 +++++++++++++++---------- netbox/circuits/views.py | 6 +++--- netbox/netbox/views.py | 2 +- netbox/utilities/tables.py | 4 ++-- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/netbox/circuits/tables.py b/netbox/circuits/tables.py index a7e1b0e84..b04d0cbfc 100644 --- a/netbox/circuits/tables.py +++ b/netbox/circuits/tables.py @@ -27,18 +27,23 @@ STATUS_LABEL = """ class ProviderTable(BaseTable): pk = ToggleColumn() name = tables.LinkColumn() + portal_url = tables.URLColumn( + visible=False + ) + noc_contact = tables.Column( + visible=False + ) + admin_contact = tables.Column( + visible=False + ) + circuit_count = tables.Column( + accessor=Accessor('count_circuits'), + verbose_name='Circuits' + ) class Meta(BaseTable.Meta): model = Provider - fields = ('pk', 'name', 'asn', 'account',) - - -class ProviderDetailTable(ProviderTable): - circuit_count = tables.Column(accessor=Accessor('count_circuits'), verbose_name='Circuits') - - class Meta(ProviderTable.Meta): - model = Provider - fields = ('pk', 'name', 'asn', 'account', 'circuit_count') + fields = ('pk', 'name', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'circuit_count') # @@ -86,6 +91,6 @@ class CircuitTable(BaseTable): class Meta(BaseTable.Meta): model = Circuit fields = ( - 'pk', 'cid', 'status', 'type', 'provider', 'tenant', 'a_side', 'z_side', 'install_date', 'commit_rate', + 'pk', 'cid', 'provider', 'type', 'status', 'tenant', 'a_side', 'z_side', 'install_date', 'commit_rate', 'description', ) diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index b092e1855..709d2a726 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -28,7 +28,7 @@ class ProviderListView(PermissionRequiredMixin, ObjectListView): queryset = Provider.objects.annotate(count_circuits=Count('circuits')) filterset = filters.ProviderFilterSet filterset_form = forms.ProviderFilterForm - table = tables.ProviderDetailTable + table = tables.ProviderTable class ProviderView(PermissionRequiredMixin, View): @@ -87,7 +87,7 @@ class ProviderBulkImportView(PermissionRequiredMixin, BulkImportView): class ProviderBulkEditView(PermissionRequiredMixin, BulkEditView): permission_required = 'circuits.change_provider' - queryset = Provider.objects.all() + queryset = Provider.objects.annotate(count_circuits=Count('circuits')) filterset = filters.ProviderFilterSet table = tables.ProviderTable form = forms.ProviderBulkEditForm @@ -96,7 +96,7 @@ class ProviderBulkEditView(PermissionRequiredMixin, BulkEditView): class ProviderBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): permission_required = 'circuits.delete_provider' - queryset = Provider.objects.all() + queryset = Provider.objects.annotate(count_circuits=Count('circuits')) filterset = filters.ProviderFilterSet table = tables.ProviderTable default_return_url = 'circuits:provider_list' diff --git a/netbox/netbox/views.py b/netbox/netbox/views.py index 25c32338b..98272a50a 100644 --- a/netbox/netbox/views.py +++ b/netbox/netbox/views.py @@ -44,7 +44,7 @@ SEARCH_TYPES = OrderedDict(( # Circuits ('provider', { 'permission': 'circuits.view_provider', - 'queryset': Provider.objects.all(), + 'queryset': Provider.objects.annotate(count_circuits=Count('circuits')), 'filterset': ProviderFilterSet, 'table': ProviderTable, 'url': 'circuits:provider_list', diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index 7da664c43..be0890274 100644 --- a/netbox/utilities/tables.py +++ b/netbox/utilities/tables.py @@ -37,10 +37,10 @@ class BaseTable(tables.Table): @property def configurable_columns(self): selected_columns = [ - (name, self.columns[name].verbose_name) for name in self.sequence if name != 'pk' + (name, self.columns[name].verbose_name) for name in self.sequence if name not in ['pk', 'actions'] ] available_columns = [ - (name, column.verbose_name) for name, column in self.columns.items() if name not in self.sequence and name != 'pk' + (name, column.verbose_name) for name, column in self.columns.items() if name not in self.sequence and name not in ['pk', 'actions'] ] return selected_columns + available_columns