|
@@ -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(
|