Coverage for circuits/api/serializers_/providers.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 circuits.models import Provider, ProviderAccount, ProviderNetwork 

4from ipam.api.serializers_.asns import ASNSerializer 

5from ipam.models import ASN 

6from netbox.api.fields import RelatedObjectCountField, SerializedPKRelatedField 

7from netbox.api.serializers import PrimaryModelSerializer 

8 

9from .nested import NestedProviderAccountSerializer 

10 

11__all__ = ( 

12 'ProviderAccountSerializer', 

13 'ProviderNetworkSerializer', 

14 'ProviderSerializer', 

15) 

16 

17 

18class ProviderSerializer(PrimaryModelSerializer): 

19 accounts = SerializedPKRelatedField( 

20 queryset=ProviderAccount.objects.all(), 

21 serializer=NestedProviderAccountSerializer, 

22 required=False, 

23 many=True 

24 ) 

25 asns = SerializedPKRelatedField( 

26 queryset=ASN.objects.all(), 

27 serializer=ASNSerializer, 

28 nested=True, 

29 required=False, 

30 many=True 

31 ) 

32 

33 # Related object counts 

34 circuit_count = RelatedObjectCountField('circuits') 

35 

36 class Meta: 

37 model = Provider 

38 fields = [ 

39 'id', 'url', 'display_url', 'display', 'name', 'slug', 'accounts', 'description', 'owner', 'comments', 

40 'asns', 'tags', 'custom_fields', 'created', 'last_updated', 'circuit_count', 

41 ] 

42 brief_fields = ('id', 'url', 'display', 'name', 'slug', 'description', 'circuit_count') 

43 

44 

45class ProviderAccountSerializer(PrimaryModelSerializer): 

46 provider = ProviderSerializer(nested=True) 

47 name = serializers.CharField(allow_blank=True, max_length=100, required=False, default='') 

48 

49 class Meta: 

50 model = ProviderAccount 

51 fields = [ 

52 'id', 'url', 'display_url', 'display', 'provider', 'name', 'account', 'description', 'owner', 'comments', 

53 'tags', 'custom_fields', 'created', 'last_updated', 

54 ] 

55 brief_fields = ('id', 'url', 'display', 'name', 'account', 'description') 

56 

57 

58class ProviderNetworkSerializer(PrimaryModelSerializer): 

59 provider = ProviderSerializer(nested=True) 

60 

61 class Meta: 

62 model = ProviderNetwork 

63 fields = [ 

64 'id', 'url', 'display_url', 'display', 'provider', 'name', 'service_id', 'description', 'owner', 'comments', 

65 'tags', 'custom_fields', 'created', 'last_updated', 

66 ] 

67 brief_fields = ('id', 'url', 'display', 'name', 'description')