2019-04-19 16:50:42 -04:00
|
|
|
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
|
2019-04-19 16:50:42 -04:00
|
|
|
from ipam.models import IPAddress, Prefix, VLAN, VRF
|
2017-06-19 16:10:18 -04:00
|
|
|
from tenancy import filters
|
2016-07-26 14:58:37 -04:00
|
|
|
from tenancy.models import Tenant, TenantGroup
|
2020-03-12 10:48:17 -04:00
|
|
|
from utilities.api import ModelViewSet
|
2019-04-19 16:50:42 -04:00
|
|
|
from utilities.utils import get_subquery
|
|
|
|
from virtualization.models import VirtualMachine
|
2016-07-26 14:58:37 -04:00
|
|
|
from . import serializers
|
|
|
|
|
|
|
|
|
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):
|
2019-04-12 17:07:56 -04:00
|
|
|
queryset = TenantGroup.objects.annotate(
|
2019-04-19 16:50:42 -04:00
|
|
|
tenant_count=get_subquery(Tenant, 'group')
|
2019-04-12 17:07:56 -04:00
|
|
|
)
|
2016-07-26 14:58:37 -04:00
|
|
|
serializer_class = serializers.TenantGroupSerializer
|
2020-01-09 20:40:32 -05:00
|
|
|
filterset_class = filters.TenantGroupFilterSet
|
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
|
|
|
|
2017-11-07 15:36:10 -05:00
|
|
|
class TenantViewSet(CustomFieldModelViewSet):
|
2019-08-19 01:53:39 -04:00
|
|
|
queryset = Tenant.objects.prefetch_related(
|
|
|
|
'group', 'tags'
|
2019-04-19 16:50:42 -04:00
|
|
|
).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
|
2020-01-09 20:40:32 -05:00
|
|
|
filterset_class = filters.TenantFilterSet
|