diff options
| author | Andrew Nester <andrew.nester.dev@gmail.com> | 2016-07-22 11:51:38 +0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-08-10 15:08:06 -0400 |
| commit | 4591cf3fd88fb13325ffce91279eae38e38c61cb (patch) | |
| tree | a9e77bc9ed71afac84b0237a4689e908aef96322 /django/contrib/auth/password_validation.py | |
| parent | f5c6295797b8332134fd89e0209a18a1d1d45e0c (diff) | |
Fixed #26909 -- Allowed UserAttributeSimilarityValidator to validate against model properties.
Diffstat (limited to 'django/contrib/auth/password_validation.py')
| -rw-r--r-- | django/contrib/auth/password_validation.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/django/contrib/auth/password_validation.py b/django/contrib/auth/password_validation.py index e5ab22b614..5fdae05a84 100644 --- a/django/contrib/auth/password_validation.py +++ b/django/contrib/auth/password_validation.py @@ -6,7 +6,9 @@ import re from difflib import SequenceMatcher from django.conf import settings -from django.core.exceptions import ImproperlyConfigured, ValidationError +from django.core.exceptions import ( + FieldDoesNotExist, ImproperlyConfigured, ValidationError, +) from django.utils import lru_cache from django.utils._os import upath from django.utils.encoding import force_text @@ -144,7 +146,10 @@ class UserAttributeSimilarityValidator(object): value_parts = re.split('\W+', value) + [value] for value_part in value_parts: if SequenceMatcher(a=password.lower(), b=value_part.lower()).quick_ratio() > self.max_similarity: - verbose_name = force_text(user._meta.get_field(attribute_name).verbose_name) + try: + verbose_name = force_text(user._meta.get_field(attribute_name).verbose_name) + except FieldDoesNotExist: + verbose_name = attribute_name raise ValidationError( _("The password is too similar to the %(verbose_name)s."), code='password_too_similar', |
