diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2016-01-23 13:04:35 +0100 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2016-01-25 01:56:13 +0100 |
commit | 899947bd00df10cca15aca1b3c14125b38b35ecf (patch) | |
tree | cbe0cd8023efa657b478476a70f83d2f5cb5509b /forms.py | |
parent | bd20d0ff1c7a582f3c53d30bfc387139c419ef35 (diff) | |
download | web-899947bd00df10cca15aca1b3c14125b38b35ecf.tar.gz web-899947bd00df10cca15aca1b3c14125b38b35ecf.tar.bz2 web-899947bd00df10cca15aca1b3c14125b38b35ecf.zip |
Moved everything into a package
Diffstat (limited to 'forms.py')
-rw-r--r-- | forms.py | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/forms.py b/forms.py deleted file mode 100644 index deaffa8..0000000 --- a/forms.py +++ /dev/null @@ -1,140 +0,0 @@ -# -*- coding: utf-8 -*- -from account import SERVICES, NoSuchUserError -from flask import g, current_app, session, Markup -from flask.ext.wtf import Form -from wtforms import TextField, PasswordField, ValidationError, BooleanField,\ - validators -from functools import partial -from utils import _username_re, _username_exclude_re, decrypt_password,\ - NotRegexp, url_for - - -username = partial(TextField, 'Benutzername', [validators.Regexp(_username_re, - message=u'Benutzername darf nur aus a-z und - bestehen (2-16 Zeichen)')]) - - -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.'), - ]) - 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.')]) - - def validate_username(form, field): - try: - g.ldap.get_by_uid(field.data) - except NoSuchUserError: - 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('about'))) - else: - raise ValidationError(u'Dieser Benutzername ist schon vergeben.') - - def validate_mail(form, field): - try: - g.ldap.get_by_mail(field.data) - except 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('lost_password'))) - -class AdminCreateAccountForm(RegisterForm): - def validate_username(form, field): - try: - g.ldap.get_by_uid(field.data) - except NoSuchUserError: - return - else: - raise ValidationError(u'Dieser Benutzername ist schon vergeben') - - question = None - - -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 = TextField(u'Benutzername') - password = PasswordField('Passwort', [validators.Required()]) - - -class LostPasswordForm(Form): - username_or_mail = TextField(u'Benutzername oder E-Mail') - - def validate_username_or_mail(form, field): - if '@' not in field.data: - try: - form.user = g.ldap.get_by_uid(field.data) - except NoSuchUserError: - raise ValidationError(u'Es gibt keinen Benutzer mit diesem Namen.') - else: - try: - form.user = g.ldap.get_by_mail(field.data) - except NoSuchUserError: - raise ValidationError(u'Es gibt keinen Benutzer mit dieser Adresse.') - - - - -class SettingsForm(Form): - old_password = PasswordField('Altes Passwort') - password = PasswordField('Neues Passwort', [validators.Optional(), - validators.EqualTo('password_confirm', message=u'Passwörter stimmen nicht überein')]) - 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: - if not field.data: - raise ValidationError(u'Gib bitte dein altes Passwort ein, um ein neues zu setzen.') - if field.data != decrypt_password(session['password']): - raise ValidationError(u'Altes Passwort ist falsch.') - - def validate_mail(form, field): - results = g.ldap.find_by_mail(field.data) - for user in results: - if user.uid != g.user.uid: - raise ValidationError(u'Diese E-Mail-Adresse wird schon von einem anderen Account benutzt!') - - def get_servicepassword(self, service_id): - return getattr(self, 'password_%s' % service_id) - def get_servicepasswordconfirm(self, service_id): - return getattr(self, 'password_confirm_%s' % service_id) - def get_servicedelete(self, service_id): - return getattr(self, 'delete_%s' % service_id) - - -class AdminDisableAccountForm(Form): - username = TextField(u'Benutzername') - - def validate_username(form, field): - try: - form.user = g.ldap.get_by_uid(field.data) - except NoSuchUserError: - raise ValidationError(u'Dieser Benutzername existiert nicht') - - - -#TODO: find out how we can use app.all_services in that early state -for service in SERVICES: - setattr(SettingsForm, 'password_%s' % service.id, - PasswordField(u'Passwort für %s' % service.name, [ - validators.Optional(), - validators.EqualTo('password_confirm_%s' % service.id, message=u'Passwörter stimmen nicht überein'), - ])) - setattr(SettingsForm, 'password_confirm_%s' % service.id, - PasswordField(u'Passwort für %s (Bestätigung)' % service.name)) - setattr(SettingsForm, 'delete_%s' % service.id, - BooleanField(u'Passwort für %s löschen' % service.name)) |