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

1from rest_framework import serializers 

2 

3from netbox.api.fields import RelatedObjectCountField 

4from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer 

5from tenancy.models import Tenant, TenantGroup 

6 

7from .nested import NestedTenantGroupSerializer 

8 

9__all__ = ( 

10 'TenantGroupSerializer', 

11 'TenantSerializer', 

12) 

13 

14 

15class TenantGroupSerializer(NestedGroupModelSerializer): 

16 parent = NestedTenantGroupSerializer(required=False, allow_null=True) 

17 tenant_count = serializers.IntegerField(read_only=True, default=0) 

18 

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') 

26 

27 

28class TenantSerializer(PrimaryModelSerializer): 

29 group = TenantGroupSerializer(nested=True, required=False, allow_null=True, default=None) 

30 

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') 

42 

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')