From 2047a16a570bd1a82bdaf500e8952033b75cf2fe Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 14 Nov 2017 13:15:09 -0500 Subject: [PATCH] Fixes #1703: Added API serializer validation for custom integer fields --- netbox/extras/api/customfields.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/netbox/extras/api/customfields.py b/netbox/extras/api/customfields.py index f3a9815fe..0497138c4 100644 --- a/netbox/extras/api/customfields.py +++ b/netbox/extras/api/customfields.py @@ -7,7 +7,7 @@ from django.db import transaction from rest_framework import serializers from rest_framework.exceptions import ValidationError -from extras.constants import CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_SELECT +from extras.constants import CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_INTEGER, CF_TYPE_SELECT from extras.models import CustomField, CustomFieldChoice, CustomFieldValue from utilities.api import ValidatedModelSerializer @@ -38,6 +38,15 @@ class CustomFieldsSerializer(serializers.BaseSerializer): # Data validation if value not in [None, '']: + # Validate integer + if cf.type == CF_TYPE_INTEGER: + try: + int(value) + except ValueError: + raise ValidationError( + "Invalid value for integer field {}: {}".format(field_name, value) + ) + # Validate boolean if cf.type == CF_TYPE_BOOLEAN and value not in [True, False, 1, 0]: raise ValidationError(