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

53 lines
1.5 KiB
Python
Raw Normal View History

from circuits.models import Circuit
from dcim.models import Device, Rack, Site
2017-05-24 11:33:11 -04:00
from extras.api.views import CustomFieldModelViewSet
from ipam.models import IPAddress, Prefix, VLAN, VRF
from tenancy import filters
2016-07-26 14:58:37 -04:00
from tenancy.models import Tenant, TenantGroup
from utilities.api import FieldChoicesViewSet, ModelViewSet
from utilities.utils import get_subquery
from virtualization.models import VirtualMachine
2016-07-26 14:58:37 -04:00
from . import serializers
#
# Field choices
#
class TenancyFieldChoicesViewSet(FieldChoicesViewSet):
fields = ()
2017-01-24 17:12:16 -05:00
#
# Tenant Groups
#
2016-07-26 14:58:37 -04:00
2017-01-24 17:12:16 -05:00
class TenantGroupViewSet(ModelViewSet):
queryset = TenantGroup.objects.annotate(
tenant_count=get_subquery(Tenant, 'group')
)
2016-07-26 14:58:37 -04:00
serializer_class = serializers.TenantGroupSerializer
2018-11-02 13:46:28 -04:00
filterset_class = filters.TenantGroupFilter
2016-07-26 14:58:37 -04:00
2017-01-24 17:12:16 -05:00
#
# Tenants
#
2016-07-26 14:58:37 -04:00
class TenantViewSet(CustomFieldModelViewSet):
queryset = Tenant.objects.prefetch_related(
'group', 'tags'
).annotate(
circuit_count=get_subquery(Circuit, 'tenant'),
device_count=get_subquery(Device, 'tenant'),
ipaddress_count=get_subquery(IPAddress, 'tenant'),
prefix_count=get_subquery(Prefix, 'tenant'),
rack_count=get_subquery(Rack, 'tenant'),
site_count=get_subquery(Site, 'tenant'),
virtualmachine_count=get_subquery(VirtualMachine, 'tenant'),
vlan_count=get_subquery(VLAN, 'tenant'),
vrf_count=get_subquery(VRF, 'tenant')
)
2016-07-26 14:58:37 -04:00
serializer_class = serializers.TenantSerializer
2018-11-02 13:46:28 -04:00
filterset_class = filters.TenantFilter