1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Cleaned up device component nested serializers

This commit is contained in:
Jeremy Stretch
2017-01-26 22:37:17 -05:00
parent acfba410dd
commit ddc2c8d110
4 changed files with 45 additions and 66 deletions

View File

@ -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

View File

@ -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']
class DeviceBayNestedSerializer(DeviceBaySerializer):
installed_device = DeviceNestedSerializer()
class Meta(DeviceBaySerializer.Meta):
fields = ['id', 'name', 'installed_device']
class DeviceBayDetailSerializer(DeviceBaySerializer):
installed_device = DeviceNestedSerializer()
class Meta(DeviceBaySerializer.Meta):
fields = ['id', 'device', 'name', 'installed_device'] fields = ['id', 'device', 'name', 'installed_device']
class NestedDeviceBaySerializer(DeviceBaySerializer):
class Meta:
model = DeviceBay
fields = ['id', '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']
# #

View File

@ -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'])

View File

@ -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