From e34e288bc5713a5a34958be8e678d2b23f4c7adb Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Tue, 15 Oct 2013 23:23:19 +0200 Subject: Flash on error in all forms --- app/forms.py | 22 ++++++++++++++++++++-- app/views/login.py | 4 +--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/forms.py b/app/forms.py index 3bba70e..664b709 100644 --- a/app/forms.py +++ b/app/forms.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- - -from flask.ext.wtf import Form +import flask +from flask.ext.wtf import Form as _Form from wtforms.fields import DateField, IntegerField, StringField, HiddenField, PasswordField from wtforms import validators as v from wtforms import fields @@ -26,6 +26,24 @@ class DecimalField(fields.DecimalField): req = [v.input_required()] +class Form(_Form): + def __init__ (self, *args, **kwargs): + self._msg = kwargs.pop("flash", u"Fehler im Formular!") + _Form.__init__(self, *args, **kwargs) + + def flash(self): + flask.flash(self._msg, u"error") + + def flash_validate (self): + if not self.validate(): + self.flash() + return False + + return True + + def validate_on_submit (self): + return self.is_submitted() and self.flash_validate() + class ExpenseForm(Form): date = DateField(u"Datum", req, format="%d.%m.%Y", diff --git a/app/views/login.py b/app/views/login.py index 413d406..8815626 100644 --- a/app/views/login.py +++ b/app/views/login.py @@ -13,13 +13,11 @@ mod = Blueprint('login', __name__) @mod.route("/login", methods=("GET", "POST")) @templated() def login(): - form = LoginForm() + form = LoginForm(flash=u"Login fehlgeschlagen!") if form.validate_on_submit(): login_user(form.user) return redirect(request.args.get("next") or url_for("index")) - elif form.is_submitted(): - flash("Login fehlgeschlagen!", "error") return { 'form': form } -- cgit v1.2.3-54-g00ecf