Browse Source

Cleaned up device component nested serializers

Jeremy Stretch 8 years ago
parent
commit
ddc2c8d110

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

@@ -1,7 +1,7 @@
 from rest_framework import serializers
 from rest_framework import serializers
 
 
 from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
 from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
-from dcim.api.serializers import SiteNestedSerializer, InterfaceNestedSerializer
+from dcim.api.serializers import SiteNestedSerializer, NestedInterfaceSerializer
 from extras.api.serializers import CustomFieldSerializer
 from extras.api.serializers import CustomFieldSerializer
 from tenancy.api.serializers import TenantNestedSerializer
 from tenancy.api.serializers import TenantNestedSerializer
 
 
@@ -47,7 +47,7 @@ class CircuitTypeNestedSerializer(CircuitTypeSerializer):
 
 
 class CircuitTerminationSerializer(serializers.ModelSerializer):
 class CircuitTerminationSerializer(serializers.ModelSerializer):
     site = SiteNestedSerializer()
     site = SiteNestedSerializer()
-    interface = InterfaceNestedSerializer()
+    interface = NestedInterfaceSerializer()
 
 
     class Meta:
     class Meta:
         model = CircuitTermination
         model = CircuitTermination

+ 31 - 47
netbox/dcim/api/serializers.py

@@ -191,20 +191,6 @@ class InterfaceTemplateNestedSerializer(serializers.ModelSerializer):
         fields = ['id', 'name', 'form_factor', 'mgmt_only']
         fields = ['id', 'name', 'form_factor', 'mgmt_only']
 
 
 
 
-class DeviceTypeDetailSerializer(DeviceTypeSerializer):
-    console_port_templates = ConsolePortTemplateNestedSerializer(many=True, read_only=True)
-    cs_port_templates = ConsoleServerPortTemplateNestedSerializer(many=True, read_only=True)
-    power_port_templates = PowerPortTemplateNestedSerializer(many=True, read_only=True)
-    power_outlet_templates = PowerPortTemplateNestedSerializer(many=True, read_only=True)
-    interface_templates = InterfaceTemplateNestedSerializer(many=True, read_only=True)
-
-    class Meta(DeviceTypeSerializer.Meta):
-        fields = ['id', 'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth',
-                  'interface_ordering', 'is_console_server', 'is_pdu', 'is_network_device', 'subdevice_role',
-                  'comments', 'custom_fields', 'console_port_templates', 'cs_port_templates', 'power_port_templates',
-                  'power_outlet_templates', 'interface_templates']
-
-
 #
 #
 # Device roles
 # Device roles
 #
 #
@@ -302,10 +288,11 @@ class ConsoleServerPortSerializer(serializers.ModelSerializer):
         fields = ['id', 'device', 'name', 'connected_console']
         fields = ['id', 'device', 'name', 'connected_console']
 
 
 
 
-class ConsoleServerPortNestedSerializer(ConsoleServerPortSerializer):
+class NestedConsoleServerPortSerializer(ConsoleServerPortSerializer):
 
 
-    class Meta(ConsoleServerPortSerializer.Meta):
+    class Meta:
-        fields = ['id', 'device', 'name']
+        model = ConsoleServerPort
+        fields = ['id', 'name', 'connected_console']
 
 
 
 
 #
 #
@@ -314,17 +301,18 @@ class ConsoleServerPortNestedSerializer(ConsoleServerPortSerializer):
 
 
 class ConsolePortSerializer(serializers.ModelSerializer):
 class ConsolePortSerializer(serializers.ModelSerializer):
     device = DeviceNestedSerializer()
     device = DeviceNestedSerializer()
-    cs_port = ConsoleServerPortNestedSerializer()
+    cs_port = ConsoleServerPortSerializer()
 
 
     class Meta:
     class Meta:
         model = ConsolePort
         model = ConsolePort
         fields = ['id', 'device', 'name', 'cs_port', 'connection_status']
         fields = ['id', 'device', 'name', 'cs_port', 'connection_status']
 
 
 
 
-class ConsolePortNestedSerializer(ConsolePortSerializer):
+class NestedConsolePortSerializer(ConsolePortSerializer):
 
 
-    class Meta(ConsolePortSerializer.Meta):
+    class Meta:
-        fields = ['id', 'device', 'name']
+        model = ConsolePort
+        fields = ['id', 'name', 'cs_port', 'connection_status']
 
 
 
 
 #
 #
@@ -339,10 +327,11 @@ class PowerOutletSerializer(serializers.ModelSerializer):
         fields = ['id', 'device', 'name', 'connected_port']
         fields = ['id', 'device', 'name', 'connected_port']
 
 
 
 
-class PowerOutletNestedSerializer(PowerOutletSerializer):
+class NestedPowerOutletSerializer(PowerOutletSerializer):
 
 
-    class Meta(PowerOutletSerializer.Meta):
+    class Meta:
-        fields = ['id', 'device', 'name']
+        model = PowerOutlet
+        fields = ['id', 'name', 'connected_port']
 
 
 
 
 #
 #
@@ -351,17 +340,18 @@ class PowerOutletNestedSerializer(PowerOutletSerializer):
 
 
 class PowerPortSerializer(serializers.ModelSerializer):
 class PowerPortSerializer(serializers.ModelSerializer):
     device = DeviceNestedSerializer()
     device = DeviceNestedSerializer()
-    power_outlet = PowerOutletNestedSerializer()
+    power_outlet = PowerOutletSerializer()
 
 
     class Meta:
     class Meta:
         model = PowerPort
         model = PowerPort
         fields = ['id', 'device', 'name', 'power_outlet', 'connection_status']
         fields = ['id', 'device', 'name', 'power_outlet', 'connection_status']
 
 
 
 
-class PowerPortNestedSerializer(PowerPortSerializer):
+class NestedPowerPortSerializer(PowerPortSerializer):
 
 
-    class Meta(PowerPortSerializer.Meta):
+    class Meta:
-        fields = ['id', 'device', 'name']
+        model = PowerPort
+        fields = ['id', 'name', 'power_outlet', 'connection_status']
 
 
 
 
 #
 #
@@ -377,15 +367,14 @@ class InterfaceSerializer(serializers.ModelSerializer):
         fields = ['id', 'device', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'is_connected']
         fields = ['id', 'device', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'is_connected']
 
 
 
 
-class InterfaceNestedSerializer(InterfaceSerializer):
+class NestedInterfaceSerializer(InterfaceSerializer):
-    form_factor = serializers.ReadOnlyField(source='get_form_factor_display')
 
 
-    class Meta(InterfaceSerializer.Meta):
+    class Meta:
-        fields = ['id', 'device', 'name']
+        model = Interface
+        fields = ['id', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'is_connected']
 
 
 
 
 class InterfaceDetailSerializer(InterfaceSerializer):
 class InterfaceDetailSerializer(InterfaceSerializer):
-    connected_interface = InterfaceSerializer()
 
 
     class Meta(InterfaceSerializer.Meta):
     class Meta(InterfaceSerializer.Meta):
         fields = ['id', 'device', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'is_connected',
         fields = ['id', 'device', 'name', 'form_factor', 'mac_address', 'mgmt_only', 'description', 'is_connected',
@@ -398,26 +387,20 @@ class InterfaceDetailSerializer(InterfaceSerializer):
 
 
 class DeviceBaySerializer(serializers.ModelSerializer):
 class DeviceBaySerializer(serializers.ModelSerializer):
     device = DeviceNestedSerializer()
     device = DeviceNestedSerializer()
+    installed_device = DeviceNestedSerializer()
 
 
     class Meta:
     class Meta:
         model = DeviceBay
         model = DeviceBay
-        fields = ['id', 'device', 'name']
+        fields = ['id', 'device', 'name', 'installed_device']
 
 
 
 
-class DeviceBayNestedSerializer(DeviceBaySerializer):
+class NestedDeviceBaySerializer(DeviceBaySerializer):
-    installed_device = DeviceNestedSerializer()
 
 
-    class Meta(DeviceBaySerializer.Meta):
+    class Meta:
+        model = DeviceBay
         fields = ['id', 'name', 'installed_device']
         fields = ['id', 'name', 'installed_device']
 
 
 
 
-class DeviceBayDetailSerializer(DeviceBaySerializer):
-    installed_device = DeviceNestedSerializer()
-
-    class Meta(DeviceBaySerializer.Meta):
-        fields = ['id', 'device', 'name', 'installed_device']
-
-
 #
 #
 # Modules
 # Modules
 #
 #
@@ -431,10 +414,11 @@ class ModuleSerializer(serializers.ModelSerializer):
         fields = ['id', 'device', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'discovered']
         fields = ['id', 'device', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'discovered']
 
 
 
 
-class ModuleNestedSerializer(ModuleSerializer):
+class NestedModuleSerializer(ModuleSerializer):
 
 
-    class Meta(ModuleSerializer.Meta):
+    class Meta:
-        fields = ['id', 'device', 'parent', 'name']
+        model = Module
+        fields = ['id', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'discovered']
 
 
 
 
 #
 #

+ 7 - 12
netbox/dcim/api/views.py

@@ -107,11 +107,6 @@ class DeviceTypeViewSet(CustomFieldModelViewSet):
     queryset = DeviceType.objects.select_related('manufacturer')
     queryset = DeviceType.objects.select_related('manufacturer')
     filter_class = filters.DeviceTypeFilter
     filter_class = filters.DeviceTypeFilter
 
 
-    def get_serializer_class(self):
-        if self.action == 'retrieve':
-            return serializers.DeviceTypeDetailSerializer
-        return serializers.DeviceTypeSerializer
-
 
 
 #
 #
 # Device Roles
 # Device Roles
@@ -156,7 +151,7 @@ class ConsolePortViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
 
 
 
 
 class NestedConsolePortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
 class NestedConsolePortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
-    serializer_class = serializers.ConsolePortSerializer
+    serializer_class = serializers.NestedConsolePortSerializer
 
 
     def get_queryset(self):
     def get_queryset(self):
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
@@ -173,7 +168,7 @@ class ConsoleServerPortViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyMode
 
 
 
 
 class NestedConsoleServerPortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
 class NestedConsoleServerPortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
-    serializer_class = serializers.ConsoleServerPortSerializer
+    serializer_class = serializers.NestedConsoleServerPortSerializer
 
 
     def get_queryset(self):
     def get_queryset(self):
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
@@ -190,7 +185,7 @@ class PowerPortViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
 
 
 
 
 class NestedPowerPortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
 class NestedPowerPortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
-    serializer_class = serializers.PowerPortSerializer
+    serializer_class = serializers.NestedPowerPortSerializer
 
 
     def get_queryset(self):
     def get_queryset(self):
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
@@ -207,7 +202,7 @@ class PowerOutletViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
 
 
 
 
 class NestedPowerOutletViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
 class NestedPowerOutletViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
-    serializer_class = serializers.PowerOutletSerializer
+    serializer_class = serializers.NestedPowerOutletSerializer
 
 
     def get_queryset(self):
     def get_queryset(self):
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
@@ -224,7 +219,7 @@ class InterfaceViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
 
 
 
 
 class NestedInterfaceViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
 class NestedInterfaceViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
-    serializer_class = serializers.InterfaceSerializer
+    serializer_class = serializers.NestedInterfaceSerializer
     filter_class = filters.InterfaceFilter
     filter_class = filters.InterfaceFilter
 
 
     def get_queryset(self):
     def get_queryset(self):
@@ -243,7 +238,7 @@ class DeviceBayViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
 
 
 
 
 class NestedDeviceBayViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
 class NestedDeviceBayViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
-    serializer_class = serializers.DeviceBayNestedSerializer
+    serializer_class = serializers.NestedDeviceBaySerializer
 
 
     def get_queryset(self):
     def get_queryset(self):
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
@@ -260,7 +255,7 @@ class ModuleViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, Gen
 
 
 
 
 class NestedModuleViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
 class NestedModuleViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
-    serializer_class = serializers.ModuleSerializer
+    serializer_class = serializers.NestedModuleSerializer
 
 
     def get_queryset(self):
     def get_queryset(self):
         device = get_object_or_404(Device, pk=self.kwargs['pk'])
         device = get_object_or_404(Device, pk=self.kwargs['pk'])

+ 2 - 2
netbox/ipam/api/serializers.py

@@ -1,6 +1,6 @@
 from rest_framework import serializers
 from rest_framework import serializers
 
 
-from dcim.api.serializers import DeviceNestedSerializer, InterfaceNestedSerializer, SiteNestedSerializer
+from dcim.api.serializers import DeviceNestedSerializer, NestedInterfaceSerializer, SiteNestedSerializer
 from extras.api.serializers import CustomFieldSerializer
 from extras.api.serializers import CustomFieldSerializer
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from tenancy.api.serializers import TenantNestedSerializer
 from tenancy.api.serializers import TenantNestedSerializer
@@ -155,7 +155,7 @@ class PrefixNestedSerializer(PrefixSerializer):
 class IPAddressSerializer(CustomFieldSerializer, serializers.ModelSerializer):
 class IPAddressSerializer(CustomFieldSerializer, serializers.ModelSerializer):
     vrf = VRFTenantSerializer()
     vrf = VRFTenantSerializer()
     tenant = TenantNestedSerializer()
     tenant = TenantNestedSerializer()
-    interface = InterfaceNestedSerializer()
+    interface = NestedInterfaceSerializer()
 
 
     class Meta:
     class Meta:
         model = IPAddress
         model = IPAddress