25 lines
917 B
Python
25 lines
917 B
Python
from django.core.exceptions import ValidationError
|
|
from django.utils.translation import gettext as _
|
|
|
|
|
|
class LettersAndDigitsValidator:
|
|
|
|
def validate(self, password, user=None):
|
|
vals = {
|
|
'Password must contain an uppercase letter.': lambda s: any(x.isupper() for x in s),
|
|
'Password must contain a lowercase letter.': lambda s: any(x.islower() for x in s),
|
|
'Password must contain a digit.': lambda s: any(x.isdigit() for x in s),
|
|
'Password cannot contain white spaces.': lambda s: not any(x.isspace() for x in s)
|
|
}
|
|
valid = None
|
|
for n, val in vals.items():
|
|
if not val(password):
|
|
valid = False
|
|
raise ValidationError(n)
|
|
return valid
|
|
|
|
def get_help_text(self):
|
|
return _(
|
|
"Your password must contain an uppercase letter, a lowercase letter, and a digit"
|
|
)
|