diff options
Diffstat (limited to '')
-rw-r--r-- | app/forms.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/app/forms.py b/app/forms.py new file mode 100644 index 0000000..da5fc9e --- /dev/null +++ b/app/forms.py @@ -0,0 +1,67 @@ +# -*- encoding: utf-8 -*- + +from flask.ext.wtf import Form +from wtforms.fields import DateField, IntegerField, StringField, HiddenField +from wtforms import validators as v +from wtforms import fields + +from wtforms.ext.sqlalchemy.fields import QuerySelectField + +import datetime + +from . import app + +today = datetime.date.today + +def is_hidden_field(f): + return isinstance(f, HiddenField) + +app.jinja_env.tests["hidden"] = is_hidden_field + +class DecimalField(fields.DecimalField): + def process_formdata(self, valuelist): + if valuelist: + value = valuelist[0].replace(',','.') + super(DecimalField, self).process_formdata([value]) + +req = [v.input_required()] + +class ExpenseForm(Form): + date = DateField("Datum", req, + format="%d.%m.%Y", + default=today()) + + expense = DecimalField("Betrag", req, + description="EUR", + places=2) + + description = StringField("Beschreibung", req) + + category = QuerySelectField("Kategorie", + get_label="name") + +class ConstForm(Form): + start = DateField("Beginn", req, + format="%m.%Y", + default=today()) + + end = DateField("Ende", req, + format="%m.%Y", + default=today(), + description="(einschließlich)") + + months = IntegerField("Zahlungsrythmus", req, + description="Monate") + + expense = DecimalField("Betrag", req, + description="EUR", + places=2) + + desc = StringField("Beschreibung", req) + + cat = QuerySelectField("Kategorie", + get_label="name") + + prev = QuerySelectField("Vorgänger", + get_label="description", + allow_blank=True) |