# -*- encoding: utf-8 -*- from flask.ext.wtf import Form from wtforms.fields import DateField, IntegerField, StringField, HiddenField, PasswordField from wtforms import validators as v from wtforms import fields from wtforms.ext.sqlalchemy.fields import QuerySelectField import datetime from . import app from . import login 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) class LoginForm(Form): username = StringField(u"Username", req) pwd = PasswordField(u"Passwort", req) def __init__(self, *args, **kwargs): Form.__init__(self,*args, **kwargs) self.user = None def validate(self): rv = Form.validate(self) if not rv: return False user = login.User.get_by(name = self.username.data) if user is None or not user.check_password(self.pwd.data): return False self.user = user return True