Coverage for tenancy/api/serializers_/tenants.py: 100%
29 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from rest_framework import serializers
3from netbox.api.fields import RelatedObjectCountField
4from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer
5from tenancy.models import Tenant, TenantGroup
7from .nested import NestedTenantGroupSerializer
9__all__ = (
10 'TenantGroupSerializer',
11 'TenantSerializer',
12)
15class TenantGroupSerializer(NestedGroupModelSerializer):
16 parent = NestedTenantGroupSerializer(required=False, allow_null=True)
17 tenant_count = serializers.IntegerField(read_only=True, default=0)
19 class Meta:
20 model = TenantGroup
21 fields = [
22 'id', 'url', 'display_url', 'display', 'name', 'slug', 'parent', 'description', 'tags', 'custom_fields',
23 'created', 'last_updated', 'tenant_count', 'owner', 'comments', '_depth',
24 ]
25 brief_fields = ('id', 'url', 'display', 'name', 'slug', 'description', 'tenant_count', '_depth')
28class TenantSerializer(PrimaryModelSerializer):
29 group = TenantGroupSerializer(nested=True, required=False, allow_null=True, default=None)
31 # Related object counts
32 circuit_count = RelatedObjectCountField('circuits')
33 device_count = RelatedObjectCountField('devices')
34 rack_count = RelatedObjectCountField('racks')
35 site_count = RelatedObjectCountField('sites')
36 ipaddress_count = RelatedObjectCountField('ip_addresses')
37 prefix_count = RelatedObjectCountField('prefixes')
38 vlan_count = RelatedObjectCountField('vlans')
39 vrf_count = RelatedObjectCountField('vrfs')
40 virtualmachine_count = RelatedObjectCountField('virtual_machines')
41 cluster_count = RelatedObjectCountField('clusters')
43 class Meta:
44 model = Tenant
45 fields = [
46 'id', 'url', 'display_url', 'display', 'name', 'slug', 'group', 'description', 'owner', 'comments', 'tags',
47 'custom_fields', 'created', 'last_updated', 'circuit_count', 'device_count', 'ipaddress_count',
48 'prefix_count', 'rack_count', 'site_count', 'virtualmachine_count', 'vlan_count', 'vrf_count',
49 'cluster_count',
50 ]
51 brief_fields = ('id', 'url', 'display', 'name', 'slug', 'description')