mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
#1269: Reworked interface connection serialization
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
from collections import OrderedDict
|
||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.validators import UniqueTogetherValidator
|
from rest_framework.validators import UniqueTogetherValidator
|
||||||
@ -601,25 +602,28 @@ class InterfaceSerializer(serializers.ModelSerializer):
|
|||||||
device = NestedDeviceSerializer()
|
device = NestedDeviceSerializer()
|
||||||
form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES)
|
form_factor = ChoiceFieldSerializer(choices=IFACE_FF_CHOICES)
|
||||||
lag = NestedInterfaceSerializer()
|
lag = NestedInterfaceSerializer()
|
||||||
|
is_connected = serializers.SerializerMethodField(read_only=True)
|
||||||
connection = serializers.SerializerMethodField(read_only=True)
|
connection = serializers.SerializerMethodField(read_only=True)
|
||||||
connected_interface = serializers.SerializerMethodField(read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'device', 'name', 'form_factor', 'enabled', 'lag', 'mtu', 'mac_address', 'mgmt_only', 'description',
|
'id', 'device', 'name', 'form_factor', 'enabled', 'lag', 'mtu', 'mac_address', 'mgmt_only', 'description',
|
||||||
'connection', 'connected_interface',
|
'is_connected', 'connection',
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_connection(self, obj):
|
def get_is_connected(self, obj):
|
||||||
if obj.connection:
|
return bool(obj.connection)
|
||||||
return NestedInterfaceConnectionSerializer(obj.connection, context=self.context).data
|
|
||||||
return None
|
|
||||||
|
|
||||||
def get_connected_interface(self, obj):
|
def get_connection(self, obj):
|
||||||
if obj.connected_interface:
|
data = OrderedDict((
|
||||||
return PeerInterfaceSerializer(obj.connected_interface, context=self.context).data
|
('interface', None),
|
||||||
return None
|
('status', None),
|
||||||
|
))
|
||||||
|
if obj.connection:
|
||||||
|
data['interface'] = PeerInterfaceSerializer(obj.connected_interface, context=self.context).data
|
||||||
|
data['status'] = obj.connection.connection_status
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class PeerInterfaceSerializer(serializers.ModelSerializer):
|
class PeerInterfaceSerializer(serializers.ModelSerializer):
|
||||||
|
Reference in New Issue
Block a user