# -*- 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 @app.template_test("hidden") def is_hidden_field(f): return isinstance(f, HiddenField) 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(u"Datum", req, format="%d.%m.%Y", default=lambda: today()) expense = DecimalField(u"Betrag", req, description=u"EUR", places=2) description = StringField(u"Beschreibung", req) category = QuerySelectField(u"Kategorie", get_label="name") class ConstForm(Form): start = DateField(u"Beginn", req, format="%m.%Y", default=lambda: today()) end = DateField(u"Ende", req, format="%m.%Y", default=lambda: today().replace(year = today().year + 1), description=u"(einschließlich)") months = IntegerField(u"Zahlungsrythmus", req, description="Monate") expense = DecimalField(u"Betrag", req, description=u"EUR", places=2) description = StringField(u"Beschreibung", req) category = QuerySelectField(u"Kategorie", get_label="name") prev = QuerySelectField(u"Vorgänger", get_label="description", allow_blank=True)