From b34f4f8e4318512139a6f985357ea8ce04b506e3 Mon Sep 17 00:00:00 2001 From: John Anderson Date: Thu, 1 Mar 2018 11:31:56 -0500 Subject: [PATCH] refactor to handle M2M validation in ValidatedModelSerializer --- netbox/dcim/api/serializers.py | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 3f3045566..17cf7fe17 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -734,30 +734,13 @@ class WritableInterfaceSerializer(ValidatedModelSerializer): # Validate that all untagged VLANs either belong to the same site as the Interface's parent Deivce or # VirtualMachine, or are global. parent = self.instance.parent if self.instance else data.get('device') or data.get('virtual_machine') - tagged_vlans = data.pop('tagged_vlans', []) - for vlan in tagged_vlans: + for vlan in data.get('tagged_vlans', []): if vlan.site not in [parent, None]: raise serializers.ValidationError( "Tagged VLAN {} must belong to the same site as the interface's parent device/VM, or it must be " "global".format(vlan) ) - - validated_data = super(WritableInterfaceSerializer, self).validate(data) - if tagged_vlans: - validated_data['tagged_vlans'] = tagged_vlans - return validated_data - - def create(self, validated_data): - """ - Becasue tagged_vlans is a M2M relationship, we have to create the interface first - """ - tagged_vlans = validated_data.pop('tagged_vlans', None) - interface = Interface.objects.create(**validated_data) - interface.save() - if tagged_vlans: - interface.tagged_vlans = tagged_vlans - interface.save() - return interface + return data #