mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -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:
|
||||
model = ConsoleServerPort
|
||||
fields = ['id', 'url', 'name', 'connected_console']
|
||||
read_only_fields = ['connected_console']
|
||||
|
||||
|
||||
#
|
||||
@ -351,6 +352,7 @@ class DeviceConsolePortSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = ConsolePort
|
||||
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:
|
||||
model = PowerOutlet
|
||||
fields = ['id', 'url', 'name', 'connected_port']
|
||||
read_only_fields = ['connected_port']
|
||||
|
||||
|
||||
#
|
||||
@ -392,6 +395,7 @@ class DevicePowerPortSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = PowerPort
|
||||
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:
|
||||
model = DeviceBay
|
||||
fields = ['id', 'url', 'name', 'installed_device']
|
||||
read_only_fields = ['installed_device']
|
||||
|
||||
|
||||
#
|
||||
@ -502,7 +507,8 @@ class ModuleSerializer(serializers.ModelSerializer):
|
||||
|
||||
class DeviceModuleSerializer(serializers.HyperlinkedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:module-detail')
|
||||
manufacturer = NestedManufacturerSerializer()
|
||||
|
||||
class Meta:
|
||||
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
|
||||
|
||||
|
||||
class DeviceConsolePortViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
||||
class DeviceConsolePortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||
serializer_class = serializers.DeviceConsolePortSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||
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
|
||||
@ -197,13 +201,17 @@ class ConsoleServerPortViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyMode
|
||||
serializer_class = serializers.ConsoleServerPortSerializer
|
||||
|
||||
|
||||
class DeviceConsoleServerPortViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
||||
class DeviceConsoleServerPortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||
serializer_class = serializers.DeviceConsoleServerPortSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||
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
|
||||
@ -215,13 +223,17 @@ class PowerPortViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
|
||||
serializer_class = serializers.PowerPortSerializer
|
||||
|
||||
|
||||
class DevicePowerPortViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
||||
class DevicePowerPortViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||
serializer_class = serializers.DevicePowerPortSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||
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
|
||||
@ -233,13 +245,17 @@ class PowerOutletViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
|
||||
serializer_class = serializers.PowerOutletSerializer
|
||||
|
||||
|
||||
class DevicePowerOutletViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
||||
class DevicePowerOutletViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||
serializer_class = serializers.DevicePowerOutletSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||
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
|
||||
@ -258,7 +274,7 @@ class InterfaceViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
|
||||
return Response(serializer.data)
|
||||
|
||||
|
||||
class DeviceInterfaceViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
||||
class DeviceInterfaceViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||
serializer_class = serializers.DeviceInterfaceSerializer
|
||||
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)\
|
||||
.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
|
||||
@ -278,13 +298,17 @@ class DeviceBayViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin,
|
||||
serializer_class = serializers.DeviceBaySerializer
|
||||
|
||||
|
||||
class DeviceDeviceBayViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
||||
class DeviceDeviceBayViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||
serializer_class = serializers.DeviceDeviceBaySerializer
|
||||
|
||||
def get_queryset(self):
|
||||
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||
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
|
||||
@ -295,13 +319,17 @@ class ModuleViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, Wri
|
||||
serializer_class = serializers.ModuleSerializer
|
||||
|
||||
|
||||
class DeviceModuleViewSet(CreateModelMixin, ListModelMixin, WritableSerializerMixin, GenericViewSet):
|
||||
class DeviceModuleViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||
serializer_class = serializers.DeviceModuleSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
device = get_object_or_404(Device, pk=self.kwargs['pk'])
|
||||
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
|
||||
|
@ -20,9 +20,8 @@ class WritableSerializerMixin(object):
|
||||
|
||||
class WritableSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = self.get_queryset().model
|
||||
fields = '__all__'
|
||||
class Meta(self.serializer_class.Meta):
|
||||
pass
|
||||
|
||||
if self.action in WRITE_OPERATIONS:
|
||||
return WritableSerializer
|
||||
|
Loading…
Reference in New Issue
Block a user