3
3
from rest_framework import serializers
4
4
from rest_framework .validators import UniqueTogetherValidator
5
5
from ..models import Number , VoiceCircuit
6
- from tenancy .api .nested_serializers import NestedTenantSerializer
7
- from dcim .api .nested_serializers import NestedRegionSerializer , NestedSiteSerializer
8
- from circuits .api .nested_serializers import NestedProviderSerializer
6
+ from tenancy .api .serializers import TenantSerializer
7
+ from dcim .api .serializers import RegionSerializer , SiteSerializer
8
+ from circuits .api .serializers import ProviderSerializer
9
9
from extras .api .serializers import TagSerializer
10
- from .nested_serializers import NestedNumberSerializer
11
- from extras .api .nested_serializers import NestedTagSerializer
12
10
from netbox .api .fields import ContentTypeField
13
- from netbox .constants import NESTED_SERIALIZER_PREFIX
14
11
from utilities .api import get_serializer_for_model
15
12
from ..choices import VOICE_CIRCUIT_ASSIGNMENT_MODELS
16
13
17
14
18
15
class NumberSerializer (TagSerializer , serializers .ModelSerializer ):
19
16
20
17
label = serializers .CharField (source = 'number' , read_only = True )
21
- tenant = NestedTenantSerializer (required = True , allow_null = False )
22
- region = NestedRegionSerializer (required = False , allow_null = True )
23
- provider = NestedProviderSerializer (required = False , allow_null = True )
24
- forward_to = NestedNumberSerializer ( required = False , allow_null = True )
25
- tags = NestedTagSerializer (many = True , required = False )
18
+ tenant = TenantSerializer (required = True , allow_null = False , nested = True )
19
+ region = RegionSerializer (required = False , allow_null = True , nested = True )
20
+ provider = ProviderSerializer (required = False , allow_null = True , nested = True )
21
+ forward_to = serializers . PrimaryKeyRelatedField ( queryset = Number . objects . all (), required = False , allow_null = True )
22
+ tags = TagSerializer (many = True , required = False , nested = True )
26
23
27
24
class Meta :
28
25
model = Number
@@ -34,23 +31,23 @@ class Meta:
34
31
class VoiceCircuitSerializer (TagSerializer , serializers .ModelSerializer ):
35
32
36
33
label = serializers .CharField (source = 'voice_circuit' , read_only = True )
37
- tenant = NestedTenantSerializer (required = True , allow_null = False )
38
- region = NestedRegionSerializer (required = False , allow_null = True )
39
- site = NestedSiteSerializer (required = False , allow_null = True )
40
- provider = NestedProviderSerializer (required = False , allow_null = True )
34
+ tenant = TenantSerializer (required = True , allow_null = False , nested = True )
35
+ region = RegionSerializer (required = False , allow_null = True , nested = True )
36
+ site = SiteSerializer (required = False , allow_null = True , nested = True )
37
+ provider = ProviderSerializer (required = False , allow_null = True , nested = True )
41
38
assigned_object_type = ContentTypeField (
42
39
queryset = ContentType .objects .filter (VOICE_CIRCUIT_ASSIGNMENT_MODELS ),
43
40
required = True ,
44
41
allow_null = False
45
42
)
46
43
assigned_object = serializers .SerializerMethodField (read_only = True )
47
- tags = NestedTagSerializer (many = True , required = False )
44
+ tags = TagSerializer (many = True , required = False , nested = True )
48
45
49
46
@extend_schema_field (serializers .JSONField (allow_null = True ))
50
47
def get_assigned_object (self , obj ):
51
48
if obj .assigned_object is None :
52
49
return None
53
- serializer = get_serializer_for_model (obj .assigned_object , prefix = NESTED_SERIALIZER_PREFIX )
50
+ serializer = get_serializer_for_model (obj .assigned_object )
54
51
context = {'request' : self .context ['request' ]}
55
52
return serializer (obj .assigned_object , context = context ).data
56
53
0 commit comments