summaryrefslogtreecommitdiff
path: root/app/forms.py
blob: b4d7427089481089d08674b5f5222ad520dc47b7 (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
49
50
# -*- 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)