summaryrefslogtreecommitdiff
path: root/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'models.py')
-rw-r--r--models.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/models.py b/models.py
new file mode 100644
index 0000000..46a24e8
--- /dev/null
+++ b/models.py
@@ -0,0 +1,37 @@
+from django.db import models
+from django import forms
+import re
+
+class ChangePasswordForm(forms.Form):
+ new_password = forms.CharField(widget=forms.PasswordInput)
+ new_password_again = forms.CharField(widget=forms.PasswordInput)
+
+ def clean(self):
+ '''
+ Validate the password submitted.
+ '''
+ cleaned_data = self.cleaned_data
+ # The two submitted strings need to match.
+ new_password = cleaned_data.get('new_password')
+ new_password_again = cleaned_data.get('new_password_again')
+ if new_password != new_password_again:
+ raise forms.ValidationError('The typed passwords do not \
+match.')
+ # Check that the length is at least 8 characters.
+ if not len(new_password) >= 8:
+ raise forms.ValidationError('Your password needs to be at \
+least 8 characters long. Currently %d characters.' % len(new_password))
+ # The password needs to contain at least one number, one upper
+ # and one lower case letter and one special character.
+ if not re.search('\d+', new_password):
+ raise forms.ValidationError('You need at least one number \
+in your password.')
+ if not re.search('[a-z]', new_password) or not re.search(
+ '[A-Z]', new_password):
+ raise forms.ValidationError('You need at least one upper \
+case letter and one lower case letter in your password.')
+ if not re.search('[,.\[\]!@#$%^&*?_\(\)-]', new_password):
+ raise forms.ValidationError('You need at least one special \
+character i.e. ,.[]!@#$%^&*?_()-')
+
+ return cleaned_data