1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fixes #1285: Enforce model validation when creating/editing objects via the API

This commit is contained in:
Jeremy Stretch
2017-07-06 17:37:24 -04:00
parent 5b43a108bc
commit 1f9806a480
8 changed files with 74 additions and 31 deletions

View File

@@ -11,7 +11,7 @@ from ipam.models import (
PREFIX_STATUS_CHOICES, RIR, Role, Service, VLAN, VLAN_STATUS_CHOICES, VLANGroup, VRF,
)
from tenancy.api.serializers import NestedTenantSerializer
from utilities.api import ChoiceFieldSerializer
from utilities.api import ChoiceFieldSerializer, ModelValidationMixin
#
@@ -45,7 +45,7 @@ class WritableVRFSerializer(CustomFieldModelSerializer):
# Roles
#
class RoleSerializer(serializers.ModelSerializer):
class RoleSerializer(ModelValidationMixin, serializers.ModelSerializer):
class Meta:
model = Role
@@ -64,7 +64,7 @@ class NestedRoleSerializer(serializers.ModelSerializer):
# RIRs
#
class RIRSerializer(serializers.ModelSerializer):
class RIRSerializer(ModelValidationMixin, serializers.ModelSerializer):
class Meta:
model = RIR
@@ -142,6 +142,9 @@ class WritableVLANGroupSerializer(serializers.ModelSerializer):
validator.set_context(self)
validator(data)
# Enforce model validation
super(WritableVLANGroupSerializer, self).validate(data)
return data
@@ -188,6 +191,9 @@ class WritableVLANSerializer(CustomFieldModelSerializer):
validator.set_context(self)
validator(data)
# Enforce model validation
super(WritableVLANSerializer, self).validate(data)
return data
@@ -297,6 +303,7 @@ class ServiceSerializer(serializers.ModelSerializer):
fields = ['id', 'device', 'name', 'port', 'protocol', 'ipaddresses', 'description']
# TODO: Figure out how to use ModelValidationMixin with ManyToManyFields. Calling clean() yields a ValueError.
class WritableServiceSerializer(serializers.ModelSerializer):
class Meta: