mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 01:48:38 -06:00
Enabled creation of device components
This commit is contained in:
parent
1fcc2b0029
commit
e1cd846c9a
@ -330,6 +330,7 @@ class DeviceConsoleServerPortSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = ConsoleServerPort
|
model = ConsoleServerPort
|
||||||
fields = ['id', 'url', 'name', 'connected_console']
|
fields = ['id', 'url', 'name', 'connected_console']
|
||||||
|
read_only_fields = ['connected_console']
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -351,6 +352,7 @@ class DeviceConsolePortSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = ConsolePort
|
model = ConsolePort
|
||||||
fields = ['id', 'url', 'name', 'cs_port', 'connection_status']
|
fields = ['id', 'url', 'name', 'cs_port', 'connection_status']
|
||||||
|
read_only_fields = ['cs_port', 'connection_status']
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -371,6 +373,7 @@ class DevicePowerOutletSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = PowerOutlet
|
model = PowerOutlet
|
||||||
fields = ['id', 'url', 'name', 'connected_port']
|
fields = ['id', 'url', 'name', 'connected_port']
|
||||||
|
read_only_fields = ['connected_port']
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -392,6 +395,7 @@ class DevicePowerPortSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = PowerPort
|
model = PowerPort
|
||||||
fields = ['id', 'url', 'name', 'power_outlet', 'connection_status']
|
fields = ['id', 'url', 'name', 'power_outlet', 'connection_status']
|
||||||
|
read_only_fields = ['power_outlet', 'connection_status']
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -485,6 +489,7 @@ class DeviceDeviceBaySerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = DeviceBay
|
model = DeviceBay
|
||||||
fields = ['id', 'url', 'name', 'installed_device']
|
fields = ['id', 'url', 'name', 'installed_device']
|
||||||
|
read_only_fields = ['installed_device']
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -502,7 +507,8 @@ class ModuleSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class DeviceModuleSerializer(serializers.HyperlinkedModelSerializer):
|
class DeviceModuleSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:module-detail')
|
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:module-detail')
|
||||||
|
manufacturer = NestedManufacturerSerializer()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Module
|
model = Module
|
||||||
fields = ['id', 'url', 'parent', 'name', 'manufacturer', 'part_id', 'serial', 'discovered']
|
fields = ['id', 'url', 'name', 'manufacturer', 'part_id', 'serial', 'discovered']
|
||||||
|
@ -179,13 +179,17 @@ class ConsolePortViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
|
|||||||
serializer_class = serializers.ConsolePortSerializer
|
serializer_class = serializers.ConsolePortSerializer
|
||||||
|
|
||||||
|
|
||||||
class DeviceConsolePortViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
class DeviceConsolePortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||||
serializer_class = serializers.DeviceConsolePortSerializer
|
serializer_class = serializers.DeviceConsolePortSerializer
|
||||||
|
|
||||||
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'])
|
||||||
return ConsolePort.objects.filter(device=device).select_related('cs_port')
|
return ConsolePort.objects.filter(device=device).select_related('cs_port')
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||||
|
serializer.save(device=device)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Console Server Ports
|
# Console Server Ports
|
||||||
@ -197,13 +201,17 @@ class ConsoleServerPortViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyMode
|
|||||||
serializer_class = serializers.ConsoleServerPortSerializer
|
serializer_class = serializers.ConsoleServerPortSerializer
|
||||||
|
|
||||||
|
|
||||||
class DeviceConsoleServerPortViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
class DeviceConsoleServerPortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||||
serializer_class = serializers.DeviceConsoleServerPortSerializer
|
serializer_class = serializers.DeviceConsoleServerPortSerializer
|
||||||
|
|
||||||
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'])
|
||||||
return ConsoleServerPort.objects.filter(device=device).select_related('connected_console')
|
return ConsoleServerPort.objects.filter(device=device).select_related('connected_console')
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||||
|
serializer.save(device=device)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Power Ports
|
# Power Ports
|
||||||
@ -215,13 +223,17 @@ class PowerPortViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
|
|||||||
serializer_class = serializers.PowerPortSerializer
|
serializer_class = serializers.PowerPortSerializer
|
||||||
|
|
||||||
|
|
||||||
class DevicePowerPortViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
class DevicePowerPortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||||
serializer_class = serializers.DevicePowerPortSerializer
|
serializer_class = serializers.DevicePowerPortSerializer
|
||||||
|
|
||||||
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'])
|
||||||
return PowerPort.objects.filter(device=device).select_related('power_outlet')
|
return PowerPort.objects.filter(device=device).select_related('power_outlet')
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||||
|
serializer.save(device=device)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Power Outlets
|
# Power Outlets
|
||||||
@ -233,13 +245,17 @@ class PowerOutletViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
|
|||||||
serializer_class = serializers.PowerOutletSerializer
|
serializer_class = serializers.PowerOutletSerializer
|
||||||
|
|
||||||
|
|
||||||
class DevicePowerOutletViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
class DevicePowerOutletViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||||
serializer_class = serializers.DevicePowerOutletSerializer
|
serializer_class = serializers.DevicePowerOutletSerializer
|
||||||
|
|
||||||
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'])
|
||||||
return PowerOutlet.objects.filter(device=device).select_related('connected_port')
|
return PowerOutlet.objects.filter(device=device).select_related('connected_port')
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||||
|
serializer.save(device=device)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Interfaces
|
# Interfaces
|
||||||
@ -258,7 +274,7 @@ class InterfaceViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
|
|||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
class DeviceInterfaceViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
class DeviceInterfaceViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||||
serializer_class = serializers.DeviceInterfaceSerializer
|
serializer_class = serializers.DeviceInterfaceSerializer
|
||||||
filter_class = filters.InterfaceFilter
|
filter_class = filters.InterfaceFilter
|
||||||
|
|
||||||
@ -267,6 +283,10 @@ class DeviceInterfaceViewSet(CreateModelMixin, ListModelMixin, WritableSerialize
|
|||||||
return Interface.objects.order_naturally(device.device_type.interface_ordering).filter(device=device)\
|
return Interface.objects.order_naturally(device.device_type.interface_ordering).filter(device=device)\
|
||||||
.select_related('connected_as_a', 'connected_as_b', 'circuit_termination')
|
.select_related('connected_as_a', 'connected_as_b', 'circuit_termination')
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||||
|
serializer.save(device=device)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device bays
|
# Device bays
|
||||||
@ -278,13 +298,17 @@ class DeviceBayViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
|
|||||||
serializer_class = serializers.DeviceBaySerializer
|
serializer_class = serializers.DeviceBaySerializer
|
||||||
|
|
||||||
|
|
||||||
class DeviceDeviceBayViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
class DeviceDeviceBayViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||||
serializer_class = serializers.DeviceDeviceBaySerializer
|
serializer_class = serializers.DeviceDeviceBaySerializer
|
||||||
|
|
||||||
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'])
|
||||||
return DeviceBay.objects.filter(device=device).select_related('installed_device')
|
return DeviceBay.objects.filter(device=device).select_related('installed_device')
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||||
|
serializer.save(device=device)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Modules
|
# Modules
|
||||||
@ -295,13 +319,17 @@ class ModuleViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, Wri
|
|||||||
serializer_class = serializers.ModuleSerializer
|
serializer_class = serializers.ModuleSerializer
|
||||||
|
|
||||||
|
|
||||||
class DeviceModuleViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
class DeviceModuleViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||||
serializer_class = serializers.DeviceModuleSerializer
|
serializer_class = serializers.DeviceModuleSerializer
|
||||||
|
|
||||||
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'])
|
||||||
return Module.objects.filter(device=device).select_related('device', 'manufacturer')
|
return Module.objects.filter(device=device).select_related('device', 'manufacturer')
|
||||||
|
|
||||||
|
def perform_create(self, serializer):
|
||||||
|
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||||
|
serializer.save(device=device)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Interface connections
|
# Interface connections
|
||||||
|
@ -20,9 +20,8 @@ class WritableSerializerMixin(object):
|
|||||||
|
|
||||||
class WritableSerializer(ModelSerializer):
|
class WritableSerializer(ModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta(self.serializer_class.Meta):
|
||||||
model = self.get_queryset().model
|
pass
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
if self.action in WRITE_OPERATIONS:
|
if self.action in WRITE_OPERATIONS:
|
||||||
return WritableSerializer
|
return WritableSerializer
|
||||||
|
Loading…
Reference in New Issue
Block a user