Ticket #14674: 14764.diff

File 14764.diff, 2.1 KB (added by thejaswi_puthraya, 5 years ago)

Test and patch

  • django/contrib/auth/forms.py

    diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py
    index aa33640..c30434a 100644
    a b  
    1 from django.contrib.auth.models import User
     1from django.contrib.auth.models import User, UNUSABLE_PASSWORD
    22from django.contrib.auth import authenticate
    33from django.contrib.auth.tokens import default_token_generator
    44from django.contrib.sites.models import get_current_site
    class PasswordResetForm(forms.Form): 
    112112        """
    113113        email = self.cleaned_data["email"]
    114114        self.users_cache = User.objects.filter(email__iexact=email)
    115         if len(self.users_cache) == 0:
     115        if self.users_cache.filter(password=UNUSABLE_PASSWORD).count():
     116            raise forms.ValidationError(_("The user account associated with this email address is not allowed to reset it's password."))
     117        if self.users_cache.count() == 0:
    116118            raise forms.ValidationError(_("That e-mail address doesn't have an associated user account. Are you sure you've registered?"))
    117119        return email
    118120
  • django/contrib/auth/tests/forms.py

    diff --git a/django/contrib/auth/tests/forms.py b/django/contrib/auth/tests/forms.py
    index 5aa49e0..e0561dc 100644
    a b class PasswordResetFormTest(TestCase): 
    250250        self.assertEqual(user.email, 'tesT@example.com')
    251251        user = User.objects.create_user('forms_test3', 'tesT', 'test')
    252252        self.assertEqual(user.email, 'tesT')
     253
     254    def test_unusable_password(self):
     255        user = User.objects.create_user('testuser', 'test@example.com', 'test')
     256        data = {"email": "test@example.com"}
     257        form = PasswordResetForm(data)
     258        self.assertTrue(form.is_valid())
     259        user.set_unusable_password()
     260        user.save()
     261        form = PasswordResetForm(data)
     262        self.assertFalse(form.is_valid())
     263        self.assertEqual(form["email"].errors,
     264                         [u"The user account associated with this email address is not allowed to reset it's password."])
Back to Top