diff options
Diffstat (limited to 'app.py')
-rw-r--r-- | app.py | 44 |
1 files changed, 25 insertions, 19 deletions
@@ -5,8 +5,8 @@ import magic, os from fit import Fit from flask import Flask, render_template, request, flash, redirect, \ url_for,jsonify -from flask.ext.wtf import Form, TextField, Required, FileField, SelectField,\ - ValidationError, file_required +from flask.ext.wtf import Form, TextField, FileField, SelectField,\ + validators, ValidationError from werkzeug import secure_filename from datetime import date @@ -18,8 +18,7 @@ app.config.from_object('settings') ALLOWED_EXTENSIONS = ['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'zip', 'gs', 'gz' ] -MODULES= [ - ('new', u'neues Modul hinzufügen'), +FORM_MODULE_LIST= [ ('alp1', u'ALP1 - Funktionale Programmierung'), ('alp2', u'ALP2 - Objektorientierte Programmierung'), ('alp3', u'ALP3 - Datenstrukturen'), @@ -34,8 +33,10 @@ MODULES= [ ('gti', u'Grundlagen der Theoretischen Informatik'), ('dbs', u'Datenbanksysteme'), ('swt', u'Softwaretechnik'), - ('aws', u'Anwendungssysteme') - ] + ('aws', u'Anwendungssysteme'), + ('', u'---'), + ('new', u'neues Modul hinzufügen') +] TERM_START_YEAR = 1999 YEARS = [(str(x),x) for x in xrange(date.today().year, TERM_START_YEAR, -1)] @@ -45,25 +46,30 @@ YEARS = [(str(x),x) for x in xrange(date.today().year, TERM_START_YEAR, -1)] class UploadForm(Form): """ Upload Form class for validation """ exam = FileField('Klausur') - module = SelectField( - 'Kurs', - validators=[Required()], - choices = MODULES - ) - module_new = TextField('Modulname', default='Modulname') + module = SelectField('Kurs', choices = FORM_MODULE_LIST) + module_new = TextField('Modulname', validators=[validators.Optional(), + validators.Length(min=5)]) year = SelectField( 'Jahr', - validators=[Required()], + validators=[validators.Required()], choices = YEARS ) def validate_exam(form, field): ext = map(lambda x: field.data.filename.endswith(x), ALLOWED_EXTENSIONS) if not any(ext): - raise ValidationError('Invalid file type') + raise ValidationError(u'Ungültiger Dateityp') if field.data.content_length > app.config['MAX_CONTENT_LENGTH']: - raise ValidationError('File is too big') + raise ValidationError(u'Zu große Datei') + + def validate_module(form, field): + modules = dict(FORM_MODULE_LIST) + data = form.module.data + if module not in modules or data == '': + raise ValidationError(u'Bitte wähle ein Modul!') + + @@ -75,9 +81,9 @@ def upload(): if form.module.data == 'new': module = form.module_new.data slug = module.encode('ascii', errors='ignore') - MODULES.append((slug,module)) + FORM_MODULE_LIST.append((slug,module)) else: - module = dict(MODULES)[form.module.data] + module = dict(FORM_MODULE_LIST)[form.module.data] year = form.year.data filename = secure_filename(form.exam.data.filename) @@ -119,12 +125,12 @@ def index(module=None): if __name__ == "__main__": - modules = dict(MODULES) + modules = dict(FORM_MODULE_LIST) # extend module list with git values for module in fit.get_modules(): # check if module is already listed if all(map(lambda (k,v): v != module, modules.items())): slug = module.encode('ascii', errors='ignore') - MODULES.append((slug, module)) + FORM_MODULE_LIST.insert(len(FORM_MODULE_LIST) - 2, (slug, module)) app.run() |