diff --git a/netbox/users/tables.py b/netbox/users/tables.py index 542a665b2..ff28545b1 100644 --- a/netbox/users/tables.py +++ b/netbox/users/tables.py @@ -152,6 +152,11 @@ class OwnerGroupTable(NetBoxTable): verbose_name=_('Name'), linkify=True ) + owner_count = columns.LinkedCountColumn( + viewname='users:owner_list', + url_params={'group_id': 'pk'}, + verbose_name=_('Owners') + ) actions = columns.ActionsColumn( actions=('edit', 'delete'), ) @@ -161,7 +166,7 @@ class OwnerGroupTable(NetBoxTable): fields = ( 'pk', 'id', 'name', 'description', ) - default_columns = ('pk', 'name', 'description') + default_columns = ('pk', 'name', 'owner_count', 'description') class OwnerTable(NetBoxTable): diff --git a/netbox/users/views.py b/netbox/users/views.py index a9c74eb40..ffb1ab8c5 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -4,6 +4,7 @@ from core.models import ObjectChange from core.tables import ObjectChangeTable from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport, BulkRename from netbox.views import generic +from utilities.query import count_related from utilities.views import GetRelatedModelsMixin, register_model_view from . import filtersets, forms, tables from .models import Group, User, ObjectPermission, Owner, OwnerGroup, Token @@ -239,7 +240,9 @@ class ObjectPermissionBulkDeleteView(generic.BulkDeleteView): @register_model_view(OwnerGroup, 'list', path='', detail=False) class OwnerGroupListView(generic.ObjectListView): - queryset = OwnerGroup.objects.all() + queryset = OwnerGroup.objects.annotate( + owner_count=count_related(Owner, 'group') + ) filterset = filtersets.OwnerGroupFilterSet filterset_form = forms.OwnerGroupFilterForm table = tables.OwnerGroupTable