# -*- encoding: utf-8 -*- import flask from flask_wtf import Form as _Form from wtforms.fields import BooleanField, DateField, IntegerField, StringField, HiddenField, PasswordField from wtforms import fields, validators, ValidationError, Form as WTForm from wtforms.ext.sqlalchemy.fields import QuerySelectField 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().process_formdata([value]) req = [validators.input_required()] class Form(_Form): class Meta: locales = ['de_DE', 'de'] def __init__ (self, *args, **kwargs): self._msg = kwargs.pop('flash', "Fehler im Formular!") _Form.__init__(self, *args, **kwargs) def flash(self): flask.flash(self._msg, '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 WTForm._get_translations(self)