diff --git a/edbob/pyramid/forms/formalchemy/__init__.py b/edbob/pyramid/forms/formalchemy/__init__.py index 3bfe237..d6aec5f 100644 --- a/edbob/pyramid/forms/formalchemy/__init__.py +++ b/edbob/pyramid/forms/formalchemy/__init__.py @@ -50,7 +50,8 @@ from edbob.pyramid.forms.formalchemy.renderers import * __all__ = ['ChildGridField', 'PropertyField', 'EnumFieldRenderer', 'PrettyDateTimeFieldRenderer', 'AutocompleteFieldRenderer', 'FieldSet', 'make_fieldset', 'required', 'pretty_datetime', - 'AssociationProxyField', 'YesNoFieldRenderer'] + 'AssociationProxyField', 'StrippingFieldRenderer', + 'YesNoFieldRenderer'] class TemplateEngine(formalchemy.templates.TemplateEngine): diff --git a/edbob/pyramid/forms/formalchemy/renderers.py b/edbob/pyramid/forms/formalchemy/renderers.py index a51d494..7b5f7e3 100644 --- a/edbob/pyramid/forms/formalchemy/renderers.py +++ b/edbob/pyramid/forms/formalchemy/renderers.py @@ -32,7 +32,7 @@ from pyramid.renderers import render __all__ = ['AutocompleteFieldRenderer', 'EnumFieldRenderer', - 'YesNoFieldRenderer'] + 'StrippingFieldRenderer', 'YesNoFieldRenderer'] def AutocompleteFieldRenderer(service_url, field_value=None, field_display=None, width='300px'): @@ -83,6 +83,17 @@ def EnumFieldRenderer(enum): return Renderer +class StrippingFieldRenderer(formalchemy.TextFieldRenderer): + """ + Standard text field renderer, which strips whitespace from either end of + the input value on deserialization. + """ + + def deserialize(self): + value = super(StrippingFieldRenderer, self).deserialize() + return value.strip() + + class YesNoFieldRenderer(formalchemy.fields.CheckBoxFieldRenderer): def render_readonly(self, **kwargs):