summaryrefslogtreecommitdiffstats
path: root/forms.py
diff options
context:
space:
mode:
authorMarian Sigler <m@qjym.de>2012-09-26 03:47:57 +0200
committerMarian Sigler <m@qjym.de>2012-09-26 03:47:57 +0200
commitbf5d684c05a26787de0de80b0894b9d2d031c6ad (patch)
tree384a98a46061d04cc5064059f89215886b208dbc /forms.py
parent1d149b55d57632c41bb3d0d60805f3552cde3a22 (diff)
downloadweb-bf5d684c05a26787de0de80b0894b9d2d031c6ad.tar.gz
web-bf5d684c05a26787de0de80b0894b9d2d031c6ad.tar.bz2
web-bf5d684c05a26787de0de80b0894b9d2d031c6ad.zip
Implement password recovery functionality.
Diffstat (limited to 'forms.py')
-rw-r--r--forms.py25
1 files changed, 19 insertions, 6 deletions
diff --git a/forms.py b/forms.py
index c5728d5..ff54449 100644
--- a/forms.py
+++ b/forms.py
@@ -1,14 +1,17 @@
# -*- coding: utf-8 -*-
-from account import SERVICES
-from flask.ext.wtf import Form, validators, TextField, PasswordField
+from account import SERVICES, NoSuchUserError
+from flask import g
+from flask.ext.wtf import Form, validators, TextField, PasswordField,\
+ ValidationError
+from functools import partial
from utils import _username_re
-username = TextField('Benutzername', [validators.Regexp(_username_re, message=u'Benutzername darf nur aus a-z bestehen (2-16 Zeichen)')])
+username = partial(TextField, 'Benutzername', [validators.Regexp(_username_re, message=u'Benutzername darf nur aus a-z bestehen (2-16 Zeichen)')])
class RegisterForm(Form):
- username = username
+ username = username()
mail = TextField('E-Mail-Adresse', [validators.Email(), validators.Length(min=6, max=50)])
@@ -16,13 +19,24 @@ class RegisterCompleteForm(Form):
password = PasswordField('Passwort', [validators.Required(),
validators.EqualTo('password_confirm', message=u'Passwörter stimmen nicht überein')])
password_confirm = PasswordField(u'Passwort bestätigen')
+ # n.b. this form is also used in lost_password_complete
class LoginForm(Form):
- username = username
+ username = username()
password = PasswordField('Passwort', [validators.Required()])
+class LostPasswordForm(Form):
+ username = username()
+
+ def validate_username(form, field):
+ try:
+ form.user = g.ldap.get_by_uid(field.data)
+ except NoSuchUserError:
+ raise ValidationError(u'Es gibt keinen Benutzer mit diesem Namen.')
+
+
class SettingsForm(Form):
old_password = PasswordField('Bisheriges Passwort',
[validators.Required(u'Bitte gib dein (altes) Passwort an, um deine Daten zu ändern.')])
@@ -47,4 +61,3 @@ for service in SERVICES:
]))
setattr(SettingsForm, 'password_confirm_%s' % service.id,
PasswordField(u'Passwort für %s (Bestätigung)' % service.name))
-