Skip to content

Commit c74ed04

Browse files
committed
Added filters as part of wtf accepted field parameters.
Also added basic validation method in WtfBaseField to ensure the both submitted 'validators' and 'filters' are list values or callables.
1 parent 12af814 commit c74ed04

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

flask_mongoengine/wtf/base.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,32 @@ class WtfBaseField(BaseField):
1010
number of field parameters, and settings on behalf
1111
of document model form generator for WTForm.
1212
13+
@param validators: wtf model form field validators.
14+
@param filters: wtf model form field filters.
1315
"""
1416

15-
def __init__(self, validators=None, **kwargs):
17+
def __init__(self, validators=None, filters=None, **kwargs):
18+
19+
self.validators =\
20+
self._ensure_callable_or_list(validators, 'validators')
21+
self.filters = self._ensure_callable_or_list(filters, 'filters')
22+
1623
BaseField.__init__(self, **kwargs)
1724

18-
# Ensure we have a list of validators
19-
if validators is not None:
20-
if callable(validators):
21-
validators = [validators]
25+
26+
def _ensure_callable_or_list(self, field, msg_flag):
27+
"""
28+
Ensure the value submitted via field is either
29+
a callable object to convert to list or it is
30+
in fact a valid list value.
31+
32+
"""
33+
if field is not None:
34+
if callable(field):
35+
field = [field]
2236
else:
23-
msg = "Argument 'validators' must be a list value"
24-
if not isinstance(validators, list):
37+
msg = "Argument '%s' must be a list value" % msg_flag
38+
if not isinstance(field, list):
2539
raise TypeError(msg)
26-
self.validators = validators
40+
41+
return field

flask_mongoengine/wtf/orm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def convert(self, model, field, field_args):
4848
'label': getattr(field, 'verbose_name', field.name),
4949
'description': field.help_text or '',
5050
'validators': [] if not field.validators else field.validators,
51-
'filters': [],
51+
'filters': [] if not field.filters else field.filters,
5252
'default': field.default,
5353
}
5454
if field_args:

0 commit comments

Comments
 (0)