diff options
author | René 'Necoro' Neumann <necoro@necoro.net> | 2013-04-14 18:54:50 +0200 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.net> | 2013-04-14 18:54:50 +0200 |
commit | 21c591327c8c4c8bbf34831a23f4439fec32f3b2 (patch) | |
tree | 68754e3f4726d31c7a61a472fa17109a5b316295 /app/forms.py | |
parent | abfc1005db0f256ca60823f61b8a904304eb9a4c (diff) | |
download | kosten-21c591327c8c4c8bbf34831a23f4439fec32f3b2.tar.gz kosten-21c591327c8c4c8bbf34831a23f4439fec32f3b2.tar.bz2 kosten-21c591327c8c4c8bbf34831a23f4439fec32f3b2.zip |
Add expense -- in Flask
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) |