Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #8379: the admin user change form now properly validates the us…

…ername. Thanks, kratorius.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@8544 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 78d13fb1c226b7f2d28ebbda7b91c86e8559512d 1 parent 9a1e4ce
@jacobian jacobian authored
View
3  django/contrib/auth/admin.py
@@ -7,7 +7,7 @@
from django.utils.html import escape
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext, ugettext_lazy as _
-from django.contrib.auth.forms import UserCreationForm, AdminPasswordChangeForm
+from django.contrib.auth.forms import UserCreationForm, UserChangeForm, AdminPasswordChangeForm
from django.contrib import admin
class GroupAdmin(admin.ModelAdmin):
@@ -23,6 +23,7 @@ class UserAdmin(admin.ModelAdmin):
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
(_('Groups'), {'fields': ('groups',)}),
)
+ form = UserChangeForm
add_form = UserCreationForm
change_password_form = AdminPasswordChangeForm
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
View
8 django/contrib/auth/forms.py
@@ -43,6 +43,14 @@ def save(self, commit=True):
user.save()
return user
+class UserChangeForm(forms.ModelForm):
+ username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^\w+$',
+ help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."),
+ error_message = _("This value must contain only letters, numbers and underscores."))
+
+ class Meta:
+ model = User
+
class AuthenticationForm(forms.Form):
"""
Base class for authenticating users. Extend this to get a form that accepts
View
9 django/contrib/auth/tests/forms.py
@@ -181,4 +181,13 @@
>>> PasswordChangeForm(user, {}).fields.keys()
['old_password', 'new_password1', 'new_password2']
+### UserChangeForm
+
+>>> from django.contrib.auth.forms import UserChangeForm
+>>> data = {'username': 'not valid'}
+>>> form = UserChangeForm(data, instance=user)
+>>> form.is_valid()
+False
+>>> form['username'].errors
+[u'This value must contain only letters, numbers and underscores.']
"""

0 comments on commit 78d13fb

Please sign in to comment.
Something went wrong with that request. Please try again.