Fixed #28751 -- Corrected the error message for inactive users in AdminAuthenticationForm.

Thanks SeungWon Kang for the report and Tim Graham for the review.
This commit is contained in:
shanghui 2017-11-08 17:21:30 +08:00 committed by Tim Graham
parent 359370a8b8
commit ebb998976e
2 changed files with 22 additions and 3 deletions

View File

@ -7,16 +7,18 @@ class AdminAuthenticationForm(AuthenticationForm):
"""
A custom authentication form used in the admin app.
"""
error_messages = {
error_messages = dict(AuthenticationForm.error_messages)
error_messages.update({
'invalid_login': _(
"Please enter the correct %(username)s and password for a staff "
"account. Note that both fields may be case-sensitive."
),
}
})
required_css_class = 'required'
def confirm_login_allowed(self, user):
if not user.is_active or not user.is_staff:
super().confirm_login_allowed(user)
if not user.is_staff:
raise forms.ValidationError(
self.error_messages['invalid_login'],
code='invalid_login',

View File

@ -0,0 +1,17 @@
from django.contrib.admin.forms import AdminAuthenticationForm
from django.contrib.auth.models import User
from django.test import TestCase
class AdminAuthenticationFormTests(TestCase):
@classmethod
def setUpTestData(cls):
User.objects.create_user(username='inactive', password='password', is_active=False)
def test_inactive_user(self):
data = {
'username': 'inactive',
'password': 'password',
}
form = AdminAuthenticationForm(None, data)
self.assertEqual(form.non_field_errors(), ['This account is inactive.'])