1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Introduce LinkedCountColumn to standardize approach to counting related items in tables

This commit is contained in:
Jeremy Stretch
2020-09-25 12:42:17 -04:00
parent 18a8a91d57
commit 28f0da0bc1
6 changed files with 82 additions and 81 deletions

View File

@ -2,7 +2,9 @@ import django_tables2 as tables
from dcim.tables import BaseInterfaceTable
from tenancy.tables import COL_TENANT
from utilities.tables import BaseTable, ButtonsColumn, ChoiceFieldColumn, ColoredLabelColumn, TagColumn, ToggleColumn
from utilities.tables import (
BaseTable, ButtonsColumn, ChoiceFieldColumn, ColoredLabelColumn, LinkedCountColumn, TagColumn, ToggleColumn,
)
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
VIRTUALMACHINE_PRIMARY_IP = """
@ -11,14 +13,6 @@ VIRTUALMACHINE_PRIMARY_IP = """
{{ record.primary_ip4.address.ip|default:"" }}
"""
DEVICE_COUNT = """
<a href="{% url 'dcim:device_list' %}?cluster_id={{ record.pk }}">{{ value|default:0 }}</a>
"""
VM_COUNT = """
<a href="{% url 'virtualization:virtualmachine_list' %}?cluster_id={{ record.pk }}">{{ value|default:0 }}</a>
"""
#
# Cluster types
@ -69,12 +63,14 @@ class ClusterTable(BaseTable):
site = tables.Column(
linkify=True
)
device_count = tables.TemplateColumn(
template_code=DEVICE_COUNT,
device_count = LinkedCountColumn(
viewname='dcim:device_list',
url_params={'cluster_id': 'pk'},
verbose_name='Devices'
)
vm_count = tables.TemplateColumn(
template_code=VM_COUNT,
vm_count = LinkedCountColumn(
viewname='virtualization:virtualmachine_list',
url_params={'cluster_id': 'pk'},
verbose_name='VMs'
)
tags = TagColumn(