summaryrefslogtreecommitdiffstats
path: root/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'app.py')
-rw-r--r--app.py44
1 files changed, 25 insertions, 19 deletions
diff --git a/app.py b/app.py
index cbac1f7..e03b7ac 100644
--- a/app.py
+++ b/app.py
@@ -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()