Author: SmileyChris
Date: 2011-06-09 16:51:03 -0700 (Thu, 09 Jun 2011)
New Revision: 16351

Modified:
   django/trunk/django/core/validators.py
   django/trunk/docs/ref/validators.txt
   django/trunk/tests/modeltests/validators/tests.py
Log:
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.

Modified: django/trunk/django/core/validators.py
===================================================================
--- django/trunk/django/core/validators.py      2011-06-09 23:15:42 UTC (rev 
16350)
+++ django/trunk/django/core/validators.py      2011-06-09 23:51:03 UTC (rev 
16351)
@@ -29,8 +29,9 @@
         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):
         """

Modified: django/trunk/docs/ref/validators.txt
===================================================================
--- django/trunk/docs/ref/validators.txt        2011-06-09 23:15:42 UTC (rev 
16350)
+++ django/trunk/docs/ref/validators.txt        2011-06-09 23:51:03 UTC (rev 
16351)
@@ -60,26 +60,31 @@
 
 ``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 @@
     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``
 ------------------

Modified: django/trunk/tests/modeltests/validators/tests.py
===================================================================
--- django/trunk/tests/modeltests/validators/tests.py   2011-06-09 23:15:42 UTC 
(rev 16350)
+++ django/trunk/tests/modeltests/validators/tests.py   2011-06-09 23:51:03 UTC 
(rev 16351)
@@ -112,6 +112,11 @@
     (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),

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to