From bf5d684c05a26787de0de80b0894b9d2d031c6ad Mon Sep 17 00:00:00 2001 From: Marian Sigler Date: Wed, 26 Sep 2012 03:47:57 +0200 Subject: Implement password recovery functionality. --- forms.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'forms.py') 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)) - -- cgit v1.2.3-1-g7c22