Skip to content

Commit d845c22

Browse files
Compatibility Fix for NetBox 4.1
* Fix for deprecated nested serializers (#54)
1 parent 1b3717a commit d845c22

File tree

2 files changed

+14
-41
lines changed

2 files changed

+14
-41
lines changed

phonebox_plugin/api/nested_serializers.py

Lines changed: 0 additions & 24 deletions
This file was deleted.

phonebox_plugin/api/serializers.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,23 @@
33
from rest_framework import serializers
44
from rest_framework.validators import UniqueTogetherValidator
55
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
99
from extras.api.serializers import TagSerializer
10-
from .nested_serializers import NestedNumberSerializer
11-
from extras.api.nested_serializers import NestedTagSerializer
1210
from netbox.api.fields import ContentTypeField
13-
from netbox.constants import NESTED_SERIALIZER_PREFIX
1411
from utilities.api import get_serializer_for_model
1512
from ..choices import VOICE_CIRCUIT_ASSIGNMENT_MODELS
1613

1714

1815
class NumberSerializer(TagSerializer, serializers.ModelSerializer):
1916

2017
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)
2623

2724
class Meta:
2825
model = Number
@@ -34,23 +31,23 @@ class Meta:
3431
class VoiceCircuitSerializer(TagSerializer, serializers.ModelSerializer):
3532

3633
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)
4138
assigned_object_type = ContentTypeField(
4239
queryset=ContentType.objects.filter(VOICE_CIRCUIT_ASSIGNMENT_MODELS),
4340
required=True,
4441
allow_null=False
4542
)
4643
assigned_object = serializers.SerializerMethodField(read_only=True)
47-
tags = NestedTagSerializer(many=True, required=False)
44+
tags = TagSerializer(many=True, required=False, nested=True)
4845

4946
@extend_schema_field(serializers.JSONField(allow_null=True))
5047
def get_assigned_object(self, obj):
5148
if obj.assigned_object is None:
5249
return None
53-
serializer = get_serializer_for_model(obj.assigned_object, prefix=NESTED_SERIALIZER_PREFIX)
50+
serializer = get_serializer_for_model(obj.assigned_object)
5451
context = {'request': self.context['request']}
5552
return serializer(obj.assigned_object, context=context).data
5653

0 commit comments

Comments
 (0)