From 23e93e3f6eda7ad0d1472741ba7c40126806aec0 Mon Sep 17 00:00:00 2001 From: Adrien Brunet Date: Mon, 24 Oct 2016 09:07:06 +0200 Subject: [PATCH 1/4] Update field_mapping.py --- rest_framework/utils/field_mapping.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index 29005f6b7..a74419fdd 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -12,7 +12,13 @@ from rest_framework.compat import DecimalValidator from rest_framework.validators import UniqueValidator NUMERIC_FIELD_TYPES = ( - models.IntegerField, models.FloatField, models.DecimalField + models.BigIntegerField, + models.DecimalField, + models.FloatField, + models.IntegerField, + models.PositiveInteger, + models.PositiveSmallIntegerField, + models.SmallIntegerField, ) From cc0a849f3aca91fdd447a1556581442b553cc5c3 Mon Sep 17 00:00:00 2001 From: Adrien Brunet Date: Mon, 24 Oct 2016 09:25:05 +0200 Subject: [PATCH 2/4] typo PositiveInteger --> PositiveIgerField --- rest_framework/utils/field_mapping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index a74419fdd..b4d990584 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -16,7 +16,7 @@ NUMERIC_FIELD_TYPES = ( models.DecimalField, models.FloatField, models.IntegerField, - models.PositiveInteger, + models.PositiveIntegerField, models.PositiveSmallIntegerField, models.SmallIntegerField, ) From 68e080f84e33b34f704ad763ca1f5b1858a54c9e Mon Sep 17 00:00:00 2001 From: Adrien Date: Mon, 24 Oct 2016 15:45:33 +0200 Subject: [PATCH 3/4] Add failing test or PositiveIntegerField --- tests/models.py | 7 +++++++ tests/test_serializer.py | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/tests/models.py b/tests/models.py index 85143566e..c55d4257e 100644 --- a/tests/models.py +++ b/tests/models.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals import uuid +from django.core.validators import MinValueValidator from django.db import models from django.utils.translation import ugettext_lazy as _ @@ -88,3 +89,9 @@ class NullableOneToOneSource(RESTFrameworkModel): target = models.OneToOneField( OneToOneTarget, null=True, blank=True, related_name='nullable_source', on_delete=models.CASCADE) + + +# min_value with PositiveIntegerField +class MinValueItem(RESTFrameworkModel): + integer = models.IntegerField(validators=[MinValueValidator(0)]) + positive_integer = models.PositiveIntegerField() diff --git a/tests/test_serializer.py b/tests/test_serializer.py index 32be39faa..3c5cf73c2 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -9,6 +9,7 @@ import pytest from rest_framework import serializers from rest_framework.compat import unicode_repr +from .models import MinValueItem from .utils import MockObject @@ -69,6 +70,21 @@ class TestSerializer: assert serializer.errors == {'non_field_errors': ['No data provided']} +class TestMinValueSerializer: + def setup(self): + class ExampleSerializer(serializers.ModelSerializer): + class Meta: + model = MinValueItem + fields = ('integer', 'positive_integer') + self.serializer = ExampleSerializer() + + def test_min_value_for_integer_field(self): + assert self.serializer['integer'].min_value == 0 + + def test_min_value_for_positive_integer_field(self): + assert self.serializer['positive_integer'].min_value == 0 + + class TestValidateMethod: def test_non_field_error_validate_method(self): class ExampleSerializer(serializers.Serializer): From 2a9483d8d50044593f89bd5ab766ebca05e252bd Mon Sep 17 00:00:00 2001 From: Adrien Date: Mon, 24 Oct 2016 15:50:10 +0200 Subject: [PATCH 4/4] revert stupid commit which wasn't a fix at all... --- rest_framework/utils/field_mapping.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index b4d990584..29005f6b7 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -12,13 +12,7 @@ from rest_framework.compat import DecimalValidator from rest_framework.validators import UniqueValidator NUMERIC_FIELD_TYPES = ( - models.BigIntegerField, - models.DecimalField, - models.FloatField, - models.IntegerField, - models.PositiveIntegerField, - models.PositiveSmallIntegerField, - models.SmallIntegerField, + models.IntegerField, models.FloatField, models.DecimalField )