diff options
Diffstat (limited to 'accounts/forms.py')
-rw-r--r-- | accounts/forms.py | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/accounts/forms.py b/accounts/forms.py index c414e57..b404d73 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- import re -from flask import g, current_app, session, Markup, url_for +from flask import current_app, Markup, url_for from flask.ext.wtf import Form from flask.ext.login import current_user from wtforms import TextField, PasswordField, ValidationError, BooleanField,\ @@ -9,45 +9,47 @@ from wtforms.form import FormMeta from utils import NotRegexp -_username_re = re.compile(r'^[a-zA-Z][a-zA-Z0-9-]{1,15}$') -_username_exclude_re = re.compile(r'^(admin|root)') +USERNAME_RE = re.compile(r'^[a-zA-Z][a-zA-Z0-9-]{1,15}$') +USERNAME_EXCLUDE_RE = re.compile(r'^(admin|root)') class RegisterForm(Form): username = TextField('Benutzername', [ - validators.Regexp(_username_re, message=u'Benutzername darf nur aus ' - u'a-z, Zahlen und - bestehen (2-16 Zeichen, am Anfang nur a-z).'), - NotRegexp(_username_exclude_re, message=u'Dieser Benutzername ist nicht erlaubt.'), + validators.Regexp(USERNAME_RE, message=u'Benutzername darf nur aus a-z, ' + u'Zahlen und - bestehen (2-16 Zeichen, am Anfang nur a-z).'), + NotRegexp(USERNAME_EXCLUDE_RE, message=u'Dieser Benutzername ist nicht erlaubt.'), ]) mail = TextField('E-Mail-Adresse', [validators.Email(), validators.Length(min=6, max=50)]) - question = TextField('Hauptstadt von Deutschland?', [validators.AnyOf(('Berlin', 'berlin'), - message=u'Bitte beantworte die Frage.')]) + question = TextField('Hauptstadt von Deutschland?', [validators.AnyOf( + ('Berlin', 'berlin'), message=u'Bitte beantworte die Frage.')]) - def validate_username(form, field): + def validate_username(self, field): try: current_app.user_backend.get_by_uid(field.data) except current_app.user_backend.NoSuchUserError: - if current_app.username_blacklist: + if current_app.username_blacklist if field.data.lower() in current_app.username_blacklist: - - raise ValidationError(Markup(u'Dieser Benutzername ist momentan nicht erlaubt. ' - u'<a href="%s">Weitere Informationen</a>' % url_for('default.about'))) + raise ValidationError(Markup( + u'Dieser Benutzername ist momentan nicht erlaubt. ' + u'<a href="%s">Weitere Informationen</a>' + % url_for('default.about'))) else: raise ValidationError(u'Dieser Benutzername ist schon vergeben.') - def validate_mail(form, field): + def validate_mail(self, field): try: current_app.user_backend.get_by_mail(field.data) except current_app.user_backend.NoSuchUserError: pass else: - raise ValidationError(Markup(u'Ein Benutzername mit dieser Adresse existiert bereits. ' - u'Falls du deinen Benutzernamen vergessen hast, kannst du die ' - u'<a href="%s">Passwort-vergessen-Funktion</a> benutzen.' - % url_for('default.lost_password'))) + raise ValidationError(Markup( + u'Ein Benutzername mit dieser Adresse existiert bereits. ' + u'Falls du deinen Benutzernamen vergessen hast, kannst du ' + u'die <a href="%s">Passwort-vergessen-Funktion</a> benutzen.' + % url_for('default.lost_password'))) class AdminCreateAccountForm(RegisterForm): - def validate_username(form, field): + def validate_username(self, field): try: current_app.user_backend.get_by_uid(field.data) except current_app.user_backend.NoSuchUserError: @@ -67,17 +69,18 @@ class RegisterCompleteForm(Form): class LostPasswordForm(Form): username_or_mail = TextField(u'Benutzername oder E-Mail') + user = None - def validate_username_or_mail(form, field): + def validate_username_or_mail(self, field): if '@' not in field.data: try: - form.user = current_app.user_backend.get_by_uid(field.data) - except NoSuchUserError: + self.user = current_app.user_backend.get_by_uid(field.data) + except current_app.user_backend.NoSuchUserError: raise ValidationError(u'Es gibt keinen Benutzer mit diesem Namen.') else: try: - form.user = current_app.user_backend.get_by_mail(field.data) - except NoSuchUserError: + self.user = current_app.user_backend.get_by_mail(field.data) + except current_app.user_backend.NoSuchUserError: raise ValidationError(u'Es gibt keinen Benutzer mit dieser Adresse.') @@ -98,6 +101,7 @@ class SettingsMeta(FormMeta): return super(SettingsMeta, cls).__call__(*args, **kwargs) + class SettingsForm(Form): __metaclass__ = SettingsMeta @@ -107,14 +111,14 @@ class SettingsForm(Form): password_confirm = PasswordField(u'Passwort bestätigen') mail = TextField('E-Mail-Adresse', [validators.Optional(), validators.Email(), validators.Length(min=6, max=50)]) - def validate_old_password(form, field): - if form.password.data: + def validate_old_password(self, field): + if self.password.data: if not field.data: raise ValidationError(u'Gib bitte dein altes Passwort ein, um ein neues zu setzen.') if field.data != current_user.password: raise ValidationError(u'Altes Passwort ist falsch.') - def validate_mail(form, field): + def validate_mail(self, field): results = current_app.user_backend.find_by_mail(field.data) for user in results: if user.uid != current_user.uid: @@ -132,9 +136,10 @@ class SettingsForm(Form): class AdminDisableAccountForm(Form): username = TextField(u'Benutzername') + user = None - def validate_username(form, field): + def validate_username(self, field): try: - form.user = current_app.user_backend.get_by_uid(field.data) + self.user = current_app.user_backend.get_by_uid(field.data) except current_app.user_backend.NoSuchUserError: raise ValidationError(u'Dieser Benutzername existiert nicht') |