# -*- encoding: utf-8 -*- import flask from flask.ext.wtf import Form as _Form from wtforms.fields import DateField, IntegerField, StringField, HiddenField, PasswordField from wtforms import validators from wtforms import fields, ValidationError from wtforms.ext.sqlalchemy.fields import QuerySelectField from wtforms.ext.i18n.form import Form as i18nForm from . import app @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 = [validators.input_required()] class Form(_Form, i18nForm): # docs say LOCALES, code says LANGUAGES ... use both :) LANGUAGES = LOCALES = ['de_DE', 'de'] def __init__ (self, *args, **kwargs): self._msg = kwargs.pop('flash', u"Fehler im Formular!") _Form.__init__(self, *args, **kwargs) def flash(self): flask.flash(self._msg, u'error') def flash_validate (self): if not self.validate(): self.flash() return False return True def validate_on_submit (self): return self.is_submitted() and self.flash_validate() def _get_translations(self): # use WTForms builtin translation support instead of the flask-babael # stuff added by flask-wtf # FIXME: remove this, if flask-babel is used in the app return i18nForm._get_translations(self)