summaryrefslogtreecommitdiff
path: root/app/forms.py
blob: b0d533907982f6a6bfa20f92c076eef25a84c80f (plain)
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)