| 1 | Index: django/core/validators.py
|
|---|
| 2 | ===================================================================
|
|---|
| 3 | --- django/core/validators.py (revision 7104)
|
|---|
| 4 | +++ django/core/validators.py (working copy)
|
|---|
| 5 | @@ -23,6 +23,7 @@
|
|---|
| 6 | _datere = r'\d{4}-\d{1,2}-\d{1,2}'
|
|---|
| 7 | _timere = r'(?:[01]?[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?'
|
|---|
| 8 | alnum_re = re.compile(r'^\w+$')
|
|---|
| 9 | +alnumdot_re = re.compile(r'^[\.\w]+$')
|
|---|
| 10 | alnumurl_re = re.compile(r'^[-\w/]+$')
|
|---|
| 11 | ansi_date_re = re.compile('^%s$' % _datere)
|
|---|
| 12 | ansi_time_re = re.compile('^%s$' % _timere)
|
|---|
| 13 | @@ -67,6 +68,10 @@
|
|---|
| 14 | def __str__(self):
|
|---|
| 15 | return str(self.messages)
|
|---|
| 16 |
|
|---|
| 17 | +def isAlphaDotNumeric(field_data, all_data):
|
|---|
| 18 | + if not alnumdot_re.search(field_data):
|
|---|
| 19 | + raise ValidationError, "This value must contain only letters, dots, digits and underscores."
|
|---|
| 20 | +
|
|---|
| 21 | def isAlphaNumeric(field_data, all_data):
|
|---|
| 22 | if not alnum_re.search(field_data):
|
|---|
| 23 | raise ValidationError, _("This value must contain only letters, numbers and underscores.")
|
|---|
| 24 | Index: django/contrib/auth/models.py
|
|---|
| 25 | ===================================================================
|
|---|
| 26 | --- django/contrib/auth/models.py (revision 7104)
|
|---|
| 27 | +++ django/contrib/auth/models.py (working copy)
|
|---|
| 28 | @@ -128,7 +128,7 @@
|
|---|
| 29 |
|
|---|
| 30 | Username and password are required. Other fields are optional.
|
|---|
| 31 | """
|
|---|
| 32 | - username = models.CharField(_('username'), max_length=30, unique=True, validator_list=[validators.isAlphaNumeric], help_text=_("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."))
|
|---|
| 33 | + username = models.CharField(_('username'), max_length=30, unique=True, validator_list=[validators.isAlphaDotNumeric], help_text=_("Required. 30 characters or fewer. Alphanumeric characters only (letters, dots, digits and underscores)."))
|
|---|
| 34 | first_name = models.CharField(_('first name'), max_length=30, blank=True)
|
|---|
| 35 | last_name = models.CharField(_('last name'), max_length=30, blank=True)
|
|---|
| 36 | email = models.EmailField(_('e-mail address'), blank=True)
|
|---|
| 37 | Index: django/contrib/auth/forms.py
|
|---|
| 38 | ===================================================================
|
|---|
| 39 | --- django/contrib/auth/forms.py (revision 7104)
|
|---|
| 40 | +++ django/contrib/auth/forms.py (working copy)
|
|---|
| 41 | @@ -11,7 +11,7 @@
|
|---|
| 42 | def __init__(self):
|
|---|
| 43 | self.fields = (
|
|---|
| 44 | oldforms.TextField(field_name='username', length=30, max_length=30, is_required=True,
|
|---|
| 45 | - validator_list=[validators.isAlphaNumeric, self.isValidUsername]),
|
|---|
| 46 | + validator_list=[validators.isAlphaDotNumeric, self.isValidUsername]),
|
|---|
| 47 | oldforms.PasswordField(field_name='password1', length=30, max_length=60, is_required=True),
|
|---|
| 48 | oldforms.PasswordField(field_name='password2', length=30, max_length=60, is_required=True,
|
|---|
| 49 | validator_list=[validators.AlwaysMatchesOtherField('password1', _("The two password fields didn't match."))]),
|
|---|