# -*- 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)