Browse Source

connected_endpoint must be read-only on termination serializers

Jeremy Stretch 7 years ago
parent
commit
cd243a90d0

+ 4 - 2
netbox/circuits/api/serializers.py

@@ -3,7 +3,7 @@ from taggit_serializer.serializers import TaggitSerializer, TagListSerializerFie
 
 
 from circuits.constants import CIRCUIT_STATUS_CHOICES
 from circuits.constants import CIRCUIT_STATUS_CHOICES
 from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
 from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
-from dcim.api.serializers import NestedCableSerializer, NestedSiteSerializer
+from dcim.api.serializers import NestedCableSerializer, NestedInterfaceSerializer, NestedSiteSerializer
 from extras.api.customfields import CustomFieldModelSerializer
 from extras.api.customfields import CustomFieldModelSerializer
 from tenancy.api.serializers import NestedTenantSerializer
 from tenancy.api.serializers import NestedTenantSerializer
 from utilities.api import ChoiceField, ValidatedModelSerializer, WritableNestedSerializer
 from utilities.api import ChoiceField, ValidatedModelSerializer, WritableNestedSerializer
@@ -85,12 +85,14 @@ class NestedCircuitSerializer(WritableNestedSerializer):
 class CircuitTerminationSerializer(ValidatedModelSerializer):
 class CircuitTerminationSerializer(ValidatedModelSerializer):
     circuit = NestedCircuitSerializer()
     circuit = NestedCircuitSerializer()
     site = NestedSiteSerializer()
     site = NestedSiteSerializer()
+    connected_endpoint = NestedInterfaceSerializer(read_only=True)
     cable = NestedCableSerializer(read_only=True)
     cable = NestedCableSerializer(read_only=True)
 
 
     class Meta:
     class Meta:
         model = CircuitTermination
         model = CircuitTermination
         fields = [
         fields = [
-            'id', 'circuit', 'term_side', 'site', 'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info', 'cable',
+            'id', 'circuit', 'term_side', 'site', 'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info',
+            'connected_endpoint', 'cable',
         ]
         ]
 
 
 
 

+ 2 - 4
netbox/dcim/api/serializers.py

@@ -584,14 +584,13 @@ class NestedConsoleServerPortSerializer(WritableNestedSerializer):
 
 
 class ConsolePortSerializer(TaggitSerializer, ValidatedModelSerializer):
 class ConsolePortSerializer(TaggitSerializer, ValidatedModelSerializer):
     device = NestedDeviceSerializer()
     device = NestedDeviceSerializer()
-    connected_endpoint = NestedConsoleServerPortSerializer(required=False, allow_null=True)
+    connected_endpoint = NestedConsoleServerPortSerializer(read_only=True)
     cable = NestedCableSerializer(read_only=True)
     cable = NestedCableSerializer(read_only=True)
     tags = TagListSerializerField(required=False)
     tags = TagListSerializerField(required=False)
 
 
     class Meta:
     class Meta:
         model = ConsolePort
         model = ConsolePort
         fields = ['id', 'device', 'name', 'connected_endpoint', 'connection_status', 'cable', 'tags']
         fields = ['id', 'device', 'name', 'connected_endpoint', 'connection_status', 'cable', 'tags']
-        read_only_fields = ['connected_endpoint']
 
 
 
 
 class NestedConsolePortSerializer(TaggitSerializer, ValidatedModelSerializer):
 class NestedConsolePortSerializer(TaggitSerializer, ValidatedModelSerializer):
@@ -633,14 +632,13 @@ class NestedPowerOutletSerializer(WritableNestedSerializer):
 
 
 class PowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):
 class PowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):
     device = NestedDeviceSerializer()
     device = NestedDeviceSerializer()
-    connected_endpoint = NestedPowerOutletSerializer(required=False, allow_null=True)
+    connected_endpoint = NestedPowerOutletSerializer(read_only=True)
     cable = NestedCableSerializer(read_only=True)
     cable = NestedCableSerializer(read_only=True)
     tags = TagListSerializerField(required=False)
     tags = TagListSerializerField(required=False)
 
 
     class Meta:
     class Meta:
         model = PowerPort
         model = PowerPort
         fields = ['id', 'device', 'name', 'connected_endpoint', 'connection_status', 'cable', 'tags']
         fields = ['id', 'device', 'name', 'connected_endpoint', 'connection_status', 'cable', 'tags']
-        read_only_fields = ['connected_endpoint']
 
 
 
 
 class NestedPowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):
 class NestedPowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):

+ 0 - 4
netbox/dcim/tests/test_api.py

@@ -2003,7 +2003,6 @@ class ConsolePortTest(APITestCase):
         data = {
         data = {
             'device': self.device.pk,
             'device': self.device.pk,
             'name': 'Test Console Port X',
             'name': 'Test Console Port X',
-            'connected_endpoint': consoleserverport.pk,
         }
         }
 
 
         url = reverse('dcim-api:consoleport-detail', kwargs={'pk': self.consoleport1.pk})
         url = reverse('dcim-api:consoleport-detail', kwargs={'pk': self.consoleport1.pk})
@@ -2013,7 +2012,6 @@ class ConsolePortTest(APITestCase):
         self.assertEqual(ConsolePort.objects.count(), 3)
         self.assertEqual(ConsolePort.objects.count(), 3)
         consoleport1 = ConsolePort.objects.get(pk=response.data['id'])
         consoleport1 = ConsolePort.objects.get(pk=response.data['id'])
         self.assertEqual(consoleport1.name, data['name'])
         self.assertEqual(consoleport1.name, data['name'])
-        self.assertEqual(consoleport1.connected_endpoint_id, data['connected_endpoint'])
 
 
     def test_delete_consoleport(self):
     def test_delete_consoleport(self):
 
 
@@ -2229,7 +2227,6 @@ class PowerPortTest(APITestCase):
         data = {
         data = {
             'device': self.device.pk,
             'device': self.device.pk,
             'name': 'Test Power Port X',
             'name': 'Test Power Port X',
-            'connected_endpoint': poweroutlet.pk,
         }
         }
 
 
         url = reverse('dcim-api:powerport-detail', kwargs={'pk': self.powerport1.pk})
         url = reverse('dcim-api:powerport-detail', kwargs={'pk': self.powerport1.pk})
@@ -2239,7 +2236,6 @@ class PowerPortTest(APITestCase):
         self.assertEqual(PowerPort.objects.count(), 3)
         self.assertEqual(PowerPort.objects.count(), 3)
         powerport1 = PowerPort.objects.get(pk=response.data['id'])
         powerport1 = PowerPort.objects.get(pk=response.data['id'])
         self.assertEqual(powerport1.name, data['name'])
         self.assertEqual(powerport1.name, data['name'])
-        self.assertEqual(powerport1.connected_endpoint_id, data['connected_endpoint'])
 
 
     def test_delete_powerport(self):
     def test_delete_powerport(self):