summaryrefslogtreecommitdiffstats
path: root/forms.py
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2016-01-23 13:04:35 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2016-01-25 01:56:13 +0100
commit899947bd00df10cca15aca1b3c14125b38b35ecf (patch)
treecbe0cd8023efa657b478476a70f83d2f5cb5509b /forms.py
parentbd20d0ff1c7a582f3c53d30bfc387139c419ef35 (diff)
downloadweb-899947bd00df10cca15aca1b3c14125b38b35ecf.tar.gz
web-899947bd00df10cca15aca1b3c14125b38b35ecf.tar.bz2
web-899947bd00df10cca15aca1b3c14125b38b35ecf.zip
Moved everything into a package
Diffstat (limited to 'forms.py')
-rw-r--r--forms.py140
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))