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

88 lines
2.7 KiB
Python
Raw Normal View History

from rest_framework.routers import APIRootView
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
2021-04-29 16:38:56 -04:00
from tenancy import filtersets
2021-10-18 11:45:05 -04:00
from tenancy.models import *
from utilities.utils import count_related
from virtualization.models import VirtualMachine
2016-07-26 14:58:37 -04:00
from . import serializers
class TenancyRootView(APIRootView):
"""
Tenancy API root view
"""
def get_view_name(self):
return 'Tenancy'
2017-01-24 17:12:16 -05:00
#
2021-10-18 11:45:05 -04:00
# Tenants
2017-01-24 17:12:16 -05:00
#
2016-07-26 14:58:37 -04:00
class TenantGroupViewSet(CustomFieldModelViewSet):
queryset = TenantGroup.objects.add_related_count(
TenantGroup.objects.all(),
Tenant,
'group',
'tenant_count',
cumulative=True
).prefetch_related('tags')
2016-07-26 14:58:37 -04:00
serializer_class = serializers.TenantGroupSerializer
2021-04-29 16:38:56 -04:00
filterset_class = filtersets.TenantGroupFilterSet
2016-07-26 14:58:37 -04:00
class TenantViewSet(CustomFieldModelViewSet):
queryset = Tenant.objects.prefetch_related(
'group', 'tags'
).annotate(
circuit_count=count_related(Circuit, 'tenant'),
device_count=count_related(Device, 'tenant'),
ipaddress_count=count_related(IPAddress, 'tenant'),
prefix_count=count_related(Prefix, 'tenant'),
rack_count=count_related(Rack, 'tenant'),
site_count=count_related(Site, 'tenant'),
virtualmachine_count=count_related(VirtualMachine, 'tenant'),
vlan_count=count_related(VLAN, 'tenant'),
vrf_count=count_related(VRF, 'tenant')
)
2016-07-26 14:58:37 -04:00
serializer_class = serializers.TenantSerializer
2021-04-29 16:38:56 -04:00
filterset_class = filtersets.TenantFilterSet
2021-10-18 11:45:05 -04:00
#
# Contacts
#
class ContactGroupViewSet(CustomFieldModelViewSet):
queryset = ContactGroup.objects.add_related_count(
ContactGroup.objects.all(),
Contact,
'group',
'contact_count',
cumulative=True
).prefetch_related('tags')
2021-10-18 11:45:05 -04:00
serializer_class = serializers.ContactGroupSerializer
filterset_class = filtersets.ContactGroupFilterSet
class ContactRoleViewSet(CustomFieldModelViewSet):
queryset = ContactRole.objects.prefetch_related('tags')
2021-10-18 11:45:05 -04:00
serializer_class = serializers.ContactRoleSerializer
filterset_class = filtersets.ContactRoleFilterSet
class ContactViewSet(CustomFieldModelViewSet):
queryset = Contact.objects.prefetch_related('group', 'tags')
2021-10-18 11:45:05 -04:00
serializer_class = serializers.ContactSerializer
filterset_class = filtersets.ContactFilterSet
class ContactAssignmentViewSet(CustomFieldModelViewSet):
queryset = ContactAssignment.objects.prefetch_related('contact', 'role')
2021-10-18 11:45:05 -04:00
serializer_class = serializers.ContactAssignmentSerializer
filterset_class = filtersets.ContactAssignmentFilterSet