mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -06:00
Fixes #359: Use standard serializers for related objects
This commit is contained in:
parent
f44b20bbda
commit
275223ec53
@ -419,53 +419,36 @@ class RelatedConnectionsView(APIView):
|
|||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
raise MissingFilterException(detail='Must specify search parameters (peer-device and peer-interface).')
|
raise MissingFilterException(detail='Must specify search parameters "peer-device" and "peer-interface".')
|
||||||
|
|
||||||
# Initialize response skeleton
|
# Initialize response skeleton
|
||||||
response = dict()
|
response = {
|
||||||
response['device'] = serializers.DeviceSerializer(device).data
|
'device': serializers.DeviceSerializer(device).data,
|
||||||
response['console-ports'] = []
|
'console-ports': [],
|
||||||
response['power-ports'] = []
|
'power-ports': [],
|
||||||
response['interfaces'] = []
|
'interfaces': [],
|
||||||
|
}
|
||||||
|
|
||||||
# Build console connections
|
# Console connections
|
||||||
console_ports = ConsolePort.objects.filter(device=device).select_related('cs_port__device')
|
console_ports = ConsolePort.objects.filter(device=device).select_related('cs_port__device')
|
||||||
for cp in console_ports:
|
for cp in console_ports:
|
||||||
cp_info = dict()
|
data = serializers.ConsolePortSerializer(instance=cp).data
|
||||||
cp_info['name'] = cp.name
|
del(data['device'])
|
||||||
if cp.cs_port:
|
response['console-ports'].append(data)
|
||||||
cp_info['console-server'] = cp.cs_port.device.name
|
|
||||||
cp_info['port'] = cp.cs_port.name
|
|
||||||
else:
|
|
||||||
cp_info['console-server'] = None
|
|
||||||
cp_info['port'] = None
|
|
||||||
response['console-ports'].append(cp_info)
|
|
||||||
|
|
||||||
# Build power connections
|
# Power connections
|
||||||
power_ports = PowerPort.objects.filter(device=device).select_related('power_outlet__device')
|
power_ports = PowerPort.objects.filter(device=device).select_related('power_outlet__device')
|
||||||
for pp in power_ports:
|
for pp in power_ports:
|
||||||
pp_info = dict()
|
data = serializers.PowerPortSerializer(instance=pp).data
|
||||||
pp_info['name'] = pp.name
|
del(data['device'])
|
||||||
if pp.power_outlet:
|
response['power-ports'].append(data)
|
||||||
pp_info['pdu'] = pp.power_outlet.device.name
|
|
||||||
pp_info['outlet'] = pp.power_outlet.name
|
|
||||||
else:
|
|
||||||
pp_info['pdu'] = None
|
|
||||||
pp_info['outlet'] = None
|
|
||||||
response['power-ports'].append(pp_info)
|
|
||||||
|
|
||||||
# Built interface connections
|
# Interface connections
|
||||||
interfaces = Interface.objects.filter(device=device)
|
interfaces = Interface.objects.filter(device=device).select_related('connected_as_a', 'connected_as_b',
|
||||||
|
'circuit')
|
||||||
for iface in interfaces:
|
for iface in interfaces:
|
||||||
iface_info = dict()
|
data = serializers.InterfaceDetailSerializer(instance=iface).data
|
||||||
iface_info['name'] = iface.name
|
del(data['device'])
|
||||||
peer_interface = iface.get_connected_interface()
|
response['interfaces'].append(data)
|
||||||
if peer_interface:
|
|
||||||
iface_info['device'] = peer_interface.device.name
|
|
||||||
iface_info['interface'] = peer_interface.name
|
|
||||||
else:
|
|
||||||
iface_info['device'] = None
|
|
||||||
iface_info['interface'] = None
|
|
||||||
response['interfaces'].append(iface_info)
|
|
||||||
|
|
||||||
return Response(response)
|
return Response(response)
|
||||||
|
Loading…
Reference in New Issue
Block a user