summaryrefslogtreecommitdiff
path: root/django/contrib/auth
diff options
context:
space:
mode:
authorAndrew Nester <andrew.nester.dev@gmail.com>2016-07-22 11:51:38 +0300
committerTim Graham <timograham@gmail.com>2016-08-10 15:08:06 -0400
commit4591cf3fd88fb13325ffce91279eae38e38c61cb (patch)
treea9e77bc9ed71afac84b0237a4689e908aef96322 /django/contrib/auth
parentf5c6295797b8332134fd89e0209a18a1d1d45e0c (diff)
Fixed #26909 -- Allowed UserAttributeSimilarityValidator to validate against model properties.
Diffstat (limited to 'django/contrib/auth')
-rw-r--r--django/contrib/auth/password_validation.py9
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',