diff options
Diffstat (limited to 'app/forms.py')
-rw-r--r-- | app/forms.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/app/forms.py b/app/forms.py new file mode 100644 index 0000000..e562df2 --- /dev/null +++ b/app/forms.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- + +from datetime import date +from flask import current_app +from flask.ext.wtf import Form +from wtforms import TextField, FileField, SelectField, validators +from wtforms.validators import ValidationError + +class UploadForm(Form): + """ Upload Form class for validation """ + study = TextField('Studiengang') + exam = FileField('Klausur') + module = SelectField('Kurs') + module_new = TextField('Modulname', validators=[validators.Optional(), + validators.Length(min=5)]) + year = SelectField( + 'Jahr', + validators=[validators.Required()], + choices = [ (str(x),x) for x in + #xrange(date.today().year, current_app.config['FORM_START_YEAR']-1, -1) + xrange(date.today().year, 2000, -1) + ] + ) + + def validate_exam(form, field): + exts = current_app.config['ALLOWED_EXTENSIONS'] + ext = map(field.data.filename.endswith, exts) + + if not any(ext): + raise ValidationError(u'Ungültiger Dateityp') + + if field.data.content_length > current_app.config['MAX_CONTENT_LENGTH']: + raise ValidationError(u'Zu große Datei') + + def validate_module(form, field): + modules = dict(current_app.config['STUDIES'][form.study.data]) + data = form.module.data + if data not in modules or data == '': + raise ValidationError(u'Bitte wähle ein Modul!') + + |