summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Beaven <smileychris@gmail.com>2011-06-09 23:51:03 +0000
committerChris Beaven <smileychris@gmail.com>2011-06-09 23:51:03 +0000
commitb56ef75088e17fa3555766e92a6747411ccd738c (patch)
tree09fe93f584d40a9354551c29260b3cd53ece8d34
parentdb2f9bfae173b565215a9f7320d7a45d0532f2fe (diff)
Fixes #13511 -- make regex parameter to RegexValidator to be optional. Also tidies up related docs (parameters aren't attributes). Thanks for the patch work, davidfischer.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16351 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/core/validators.py3
-rw-r--r--docs/ref/validators.txt34
-rw-r--r--tests/modeltests/validators/tests.py5
3 files changed, 28 insertions, 14 deletions
diff --git a/django/core/validators.py b/django/core/validators.py
index a40af0c8dd..74db11697b 100644
--- a/django/core/validators.py
+++ b/django/core/validators.py
@@ -29,8 +29,9 @@ class RegexValidator(object):
if code is not None:
self.code = code
+ # Compile the regex if it was not passed pre-compiled.
if isinstance(self.regex, basestring):
- self.regex = re.compile(regex)
+ self.regex = re.compile(self.regex)
def __call__(self, value):
"""
diff --git a/docs/ref/validators.txt b/docs/ref/validators.txt
index 472fd62a8c..0bb5abd819 100644
--- a/docs/ref/validators.txt
+++ b/docs/ref/validators.txt
@@ -60,26 +60,31 @@ to, or in lieu of custom ``field.clean()`` methods.
``RegexValidator``
------------------
-.. class:: RegexValidator(regex, [message=None, code=None])
+.. class:: RegexValidator([regex=None, message=None, code=None])
+
+ :param regex: If not ``None``, overrides :attr:`regex`. Can be a regular
+ expression string or a pre-compiled regular expression.
+ :param message: If not ``None``, overrides :attr:`.message`.
+ :param code: If not ``None``, overrides :attr:`code`.
.. attribute:: regex
The regular expression pattern to search for the provided ``value``,
or a pre-compiled regular expression. Raises a
- :exc:`~django.core.exceptions.ValidationError` with :attr:`.message`
- and :attr:`.code` if no match is found.
+ :exc:`~django.core.exceptions.ValidationError` with :attr:`message`
+ and :attr:`code` if no match is found. By default, matches any string
+ (including an empty string).
.. attribute:: message
- The error message used by :exc:`~django.core.exceptions.ValidationError`
- if validation fails. If no :attr:`.message` is specified, a generic
- ``"Enter a valid value"`` message is used. Default value: ``None``.
+ The error message used by
+ :exc:`~django.core.exceptions.ValidationError` if validation fails.
+ Defaults to ``"Enter a valid value"``.
.. attribute:: code
The error code used by :exc:`~django.core.exceptions.ValidationError`
- if validation fails. If :attr:`.code` is not specified, ``"invalid"``
- is used. Default value: ``None``.
+ if validation fails. Defaults to ``"invalid"``.
``URLValidator``
----------------
@@ -90,16 +95,19 @@ to, or in lieu of custom ``field.clean()`` methods.
404 status code). Raises an error code of ``'invalid'`` if it doesn't look
like a URL, and a code of ``'invalid_link'`` if it doesn't exist.
+ :param verify_exists: Sets :attr:`verify_exists`. Defaults to ``False``.
+ :param validator_user_agent: Sets :attr:`validator_user_agent`. Defaults to
+ :setting:`URL_VALIDATOR_USER_AGENT` or, if that setting is set to a
+ null value, ``"Django (http://www.djangoproject.com/)"``.
+
.. attribute:: verify_exists
- Default value: ``False``. If set to ``True``, this validator checks
- that the URL actually exists.
+ If set to ``True``, this validator checks that the URL actually exists.
.. attribute:: validator_user_agent
- If :attr:`.verify_exists` is ``True``, Django uses the value of
- :attr:`.validator_user_agent` as the "User-agent" for the request. This
- defaults to :setting:`settings.URL_VALIDATOR_USER_AGENT <URL_VALIDATOR_USER_AGENT>`.
+ If :attr:`verify_exists` is ``True``, Django uses this value as the
+ "User-agent" for the request.
``validate_email``
------------------
diff --git a/tests/modeltests/validators/tests.py b/tests/modeltests/validators/tests.py
index e58526285b..08965c618f 100644
--- a/tests/modeltests/validators/tests.py
+++ b/tests/modeltests/validators/tests.py
@@ -112,6 +112,11 @@ TEST_DATA = (
(BaseValidator(True), True, None),
(BaseValidator(True), False, ValidationError),
+ (RegexValidator(), '', None),
+ (RegexValidator(), 'x1x2', None),
+ (RegexValidator('[0-9]+'), 'xxxxxx', ValidationError),
+ (RegexValidator('[0-9]+'), '1234', None),
+ (RegexValidator(re.compile('[0-9]+')), '1234', None),
(RegexValidator('.*'), '', None),
(RegexValidator(re.compile('.*')), '', None),
(RegexValidator('.*'), 'xxxxx', None),