serializers.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from rest_framework import serializers
  2. from extras.api.customfields import CustomFieldModelSerializer
  3. from extras.api.serializers import TaggedObjectSerializer
  4. from netbox.api import ValidatedModelSerializer
  5. from tenancy.models import Tenant, TenantGroup
  6. from .nested_serializers import *
  7. #
  8. # Tenants
  9. #
  10. class TenantGroupSerializer(ValidatedModelSerializer):
  11. url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenantgroup-detail')
  12. parent = NestedTenantGroupSerializer(required=False, allow_null=True)
  13. tenant_count = serializers.IntegerField(read_only=True)
  14. _depth = serializers.IntegerField(source='level', read_only=True)
  15. class Meta:
  16. model = TenantGroup
  17. fields = ['id', 'url', 'name', 'slug', 'parent', 'description', 'tenant_count', '_depth']
  18. class TenantSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
  19. url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenant-detail')
  20. group = NestedTenantGroupSerializer(required=False)
  21. circuit_count = serializers.IntegerField(read_only=True)
  22. device_count = serializers.IntegerField(read_only=True)
  23. ipaddress_count = serializers.IntegerField(read_only=True)
  24. prefix_count = serializers.IntegerField(read_only=True)
  25. rack_count = serializers.IntegerField(read_only=True)
  26. site_count = serializers.IntegerField(read_only=True)
  27. virtualmachine_count = serializers.IntegerField(read_only=True)
  28. vlan_count = serializers.IntegerField(read_only=True)
  29. vrf_count = serializers.IntegerField(read_only=True)
  30. cluster_count = serializers.IntegerField(read_only=True)
  31. class Meta:
  32. model = Tenant
  33. fields = [
  34. 'id', 'url', 'name', 'slug', 'group', 'description', 'comments', 'tags', 'custom_fields', 'created',
  35. 'last_updated', 'circuit_count', 'device_count', 'ipaddress_count', 'prefix_count', 'rack_count',
  36. 'site_count', 'virtualmachine_count', 'vlan_count', 'vrf_count', 'cluster_count',
  37. ]