mirror of https://github.com/django/django.git
Fixed #26107 -- Added option to int_list_validator() to allow negative integers.
This commit is contained in:
parent
b954ad0640
commit
d58aaa24e3
|
@ -283,8 +283,11 @@ def ip_address_validators(protocol, unpack_ipv4):
|
||||||
% (protocol, list(ip_address_validator_map)))
|
% (protocol, list(ip_address_validator_map)))
|
||||||
|
|
||||||
|
|
||||||
def int_list_validator(sep=',', message=None, code='invalid'):
|
def int_list_validator(sep=',', message=None, code='invalid', allow_negative=False):
|
||||||
regexp = _lazy_re_compile('^\d+(?:%s\d+)*\Z' % re.escape(sep))
|
regexp = _lazy_re_compile('^%(neg)s\d+(?:%(sep)s%(neg)s\d+)*\Z' % {
|
||||||
|
'neg': '(-)?' if allow_negative else '',
|
||||||
|
'sep': re.escape(sep),
|
||||||
|
})
|
||||||
return RegexValidator(regexp, message=message, code=code)
|
return RegexValidator(regexp, message=message, code=code)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -226,12 +226,17 @@ to, or in lieu of custom ``field.clean()`` methods.
|
||||||
``int_list_validator``
|
``int_list_validator``
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
.. function:: int_list_validator(sep=',', message=None, code='invalid')
|
.. function:: int_list_validator(sep=',', message=None, code='invalid', allow_negative=False)
|
||||||
|
|
||||||
.. versionadded:: 1.9
|
.. versionadded:: 1.9
|
||||||
|
|
||||||
Returns a :class:`RegexValidator` instance that ensures a string
|
Returns a :class:`RegexValidator` instance that ensures a string consists
|
||||||
consists of integers separated by ``sep``.
|
of integers separated by ``sep``. It allows negative integers when
|
||||||
|
``allow_negative`` is ``True``.
|
||||||
|
|
||||||
|
.. versionchanged:: 1.10
|
||||||
|
|
||||||
|
The ``allow_negative`` parameter was added.
|
||||||
|
|
||||||
``MaxValueValidator``
|
``MaxValueValidator``
|
||||||
---------------------
|
---------------------
|
||||||
|
|
|
@ -355,6 +355,10 @@ Validators
|
||||||
domain name labels to 63 characters and the total length of domain
|
domain name labels to 63 characters and the total length of domain
|
||||||
names to 253 characters per :rfc:`1034`.
|
names to 253 characters per :rfc:`1034`.
|
||||||
|
|
||||||
|
* :func:`~django.core.validators.int_list_validator` now accepts an optional
|
||||||
|
``allow_negative`` boolean parameter, defaulting to ``False``, to allow
|
||||||
|
negative integers.
|
||||||
|
|
||||||
Backwards incompatible changes in 1.10
|
Backwards incompatible changes in 1.10
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
|
|
|
@ -172,6 +172,11 @@ TEST_DATA = [
|
||||||
(validate_comma_separated_integer_list, '1,,2', ValidationError),
|
(validate_comma_separated_integer_list, '1,,2', ValidationError),
|
||||||
|
|
||||||
(int_list_validator(sep='.'), '1.2.3', None),
|
(int_list_validator(sep='.'), '1.2.3', None),
|
||||||
|
(int_list_validator(sep='.', allow_negative=True), '1.2.3', None),
|
||||||
|
(int_list_validator(allow_negative=True), '-1,-2,3', None),
|
||||||
|
(int_list_validator(allow_negative=True), '1,-2,-12', None),
|
||||||
|
|
||||||
|
(int_list_validator(), '-1,2,3', ValidationError),
|
||||||
(int_list_validator(sep='.'), '1,2,3', ValidationError),
|
(int_list_validator(sep='.'), '1,2,3', ValidationError),
|
||||||
(int_list_validator(sep='.'), '1.2.3\n', ValidationError),
|
(int_list_validator(sep='.'), '1.2.3\n', ValidationError),
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue