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
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from rest_framework import serializers
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
9from .nested import NestedProviderAccountSerializer
11__all__ = (
12 'ProviderAccountSerializer',
13 'ProviderNetworkSerializer',
14 'ProviderSerializer',
15)
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 )
33 # Related object counts
34 circuit_count = RelatedObjectCountField('circuits')
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')
45class ProviderAccountSerializer(PrimaryModelSerializer):
46 provider = ProviderSerializer(nested=True)
47 name = serializers.CharField(allow_blank=True, max_length=100, required=False, default='')
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')
58class ProviderNetworkSerializer(PrimaryModelSerializer):
59 provider = ProviderSerializer(nested=True)
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')