Parcourir la source

Fixes #1703: Added API serializer validation for custom integer fields

Jeremy Stretch il y a 7 ans
Parent
commit
2047a16a57
1 fichiers modifiés avec 10 ajouts et 1 suppressions
  1. 10 1
      netbox/extras/api/customfields.py

+ 10 - 1
netbox/extras/api/customfields.py

@@ -7,7 +7,7 @@ from django.db import transaction
 from rest_framework import serializers
 from rest_framework import serializers
 from rest_framework.exceptions import ValidationError
 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 extras.models import CustomField, CustomFieldChoice, CustomFieldValue
 from utilities.api import ValidatedModelSerializer
 from utilities.api import ValidatedModelSerializer
 
 
@@ -38,6 +38,15 @@ class CustomFieldsSerializer(serializers.BaseSerializer):
             # Data validation
             # Data validation
             if value not in [None, '']:
             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
                 # Validate boolean
                 if cf.type == CF_TYPE_BOOLEAN and value not in [True, False, 1, 0]:
                 if cf.type == CF_TYPE_BOOLEAN and value not in [True, False, 1, 0]:
                     raise ValidationError(
                     raise ValidationError(