mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 01:26:53 +03:00
feat: enforce Decimal type in min_value and max_value arguments of DecimalField (#8972)
* add warning when min_value and max_value are not decimal * remove redundant module name in log --------- Co-authored-by: ismaeljs <>
This commit is contained in:
parent
e08e606c82
commit
99e8b4033e
|
@ -4,6 +4,7 @@ import datetime
|
|||
import decimal
|
||||
import functools
|
||||
import inspect
|
||||
import logging
|
||||
import re
|
||||
import uuid
|
||||
from collections.abc import Mapping
|
||||
|
@ -38,6 +39,8 @@ from rest_framework.utils.formatting import lazy_format
|
|||
from rest_framework.utils.timezone import valid_datetime
|
||||
from rest_framework.validators import ProhibitSurrogateCharactersValidator
|
||||
|
||||
logger = logging.getLogger("rest_framework.fields")
|
||||
|
||||
|
||||
class empty:
|
||||
"""
|
||||
|
@ -990,6 +993,11 @@ class DecimalField(Field):
|
|||
self.max_value = max_value
|
||||
self.min_value = min_value
|
||||
|
||||
if self.max_value is not None and not isinstance(self.max_value, decimal.Decimal):
|
||||
logger.warning("max_value in DecimalField should be Decimal type.")
|
||||
if self.min_value is not None and not isinstance(self.min_value, decimal.Decimal):
|
||||
logger.warning("min_value in DecimalField should be Decimal type.")
|
||||
|
||||
if self.max_digits is not None and self.decimal_places is not None:
|
||||
self.max_whole_digits = self.max_digits - self.decimal_places
|
||||
else:
|
||||
|
|
|
@ -1216,6 +1216,17 @@ class TestMinMaxDecimalField(FieldValues):
|
|||
min_value=10, max_value=20
|
||||
)
|
||||
|
||||
def test_warning_when_not_decimal_types(self, caplog):
|
||||
import logging
|
||||
serializers.DecimalField(
|
||||
max_digits=3, decimal_places=1,
|
||||
min_value=10, max_value=20
|
||||
)
|
||||
assert caplog.record_tuples == [
|
||||
("rest_framework.fields", logging.WARNING, "max_value in DecimalField should be Decimal type."),
|
||||
("rest_framework.fields", logging.WARNING, "min_value in DecimalField should be Decimal type.")
|
||||
]
|
||||
|
||||
|
||||
class TestAllowEmptyStrDecimalFieldWithValidators(FieldValues):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue
Block a user