1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# -*- encoding: utf-8 -*-
import flask
from flask.ext.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)
|