mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Refs #19353 -- Added tests for using custom user models with built-in auth forms.
Also updated topics/auth/customizing.txt to reflect that subclasses of UserCreationForm and UserChangeForm can be used with custom user models. Thanks Baptiste Mispelon for the initial documentation.
This commit is contained in:
committed by
Tim Graham
parent
d4dc775620
commit
f0425c7260
@@ -1,5 +1,6 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
import re
|
||||
|
||||
from django import forms
|
||||
@@ -19,6 +20,7 @@ from django.utils.encoding import force_text
|
||||
from django.utils.text import capfirst
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from .models.custom_user import ExtensionUser
|
||||
from .settings import AUTH_TEMPLATES
|
||||
|
||||
|
||||
@@ -122,6 +124,21 @@ class UserCreationFormTest(TestDataMixin, TestCase):
|
||||
form['password2'].errors
|
||||
)
|
||||
|
||||
def test_custom_form(self):
|
||||
class CustomUserCreationForm(UserCreationForm):
|
||||
class Meta(UserCreationForm.Meta):
|
||||
model = ExtensionUser
|
||||
fields = UserCreationForm.Meta.fields + ('date_of_birth',)
|
||||
|
||||
data = {
|
||||
'username': 'testclient',
|
||||
'password1': 'testclient',
|
||||
'password2': 'testclient',
|
||||
'date_of_birth': '1988-02-24',
|
||||
}
|
||||
form = CustomUserCreationForm(data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
|
||||
class AuthenticationFormTest(TestDataMixin, TestCase):
|
||||
|
||||
@@ -407,6 +424,24 @@ class UserChangeFormTest(TestDataMixin, TestCase):
|
||||
# value to render correctly
|
||||
self.assertEqual(form.initial['password'], form['password'].value())
|
||||
|
||||
def test_custom_form(self):
|
||||
class CustomUserChangeForm(UserChangeForm):
|
||||
class Meta(UserChangeForm.Meta):
|
||||
model = ExtensionUser
|
||||
fields = ('username', 'password', 'date_of_birth',)
|
||||
|
||||
user = User.objects.get(username='testclient')
|
||||
data = {
|
||||
'username': 'testclient',
|
||||
'password': 'testclient',
|
||||
'date_of_birth': '1998-02-24',
|
||||
}
|
||||
form = CustomUserChangeForm(data, instance=user)
|
||||
self.assertTrue(form.is_valid())
|
||||
form.save()
|
||||
self.assertEqual(form.cleaned_data['username'], 'testclient')
|
||||
self.assertEqual(form.cleaned_data['date_of_birth'], datetime.date(1998, 2, 24))
|
||||
|
||||
|
||||
@override_settings(TEMPLATES=AUTH_TEMPLATES)
|
||||
class PasswordResetFormTest(TestDataMixin, TestCase):
|
||||
|
||||
Reference in New Issue
Block a user