from itertools import chain
from formencode import schema as fes
from pylons.i18n import lazy_ugettext as l_
from . import fields
from .render import File
[docs]class SimpleForm(fields.CompoundField):
template=File('ew.templates.simple_form', 'kajiki-html4')
defaults=dict(
fields.CompoundField.defaults,
method='POST',
action=None,
submit_text='Submit',
buttons=[],
extra_fields=[],
enctype=None,
attrs=None,
show_label=False)
SubmitButton = fields.SubmitButton
def __init__(self, **kw):
super(SimpleForm, self).__init__(**kw)
[docs] def prepare_context(self, context):
result = super(SimpleForm, self).prepare_context(context)
if result['submit_text'] is not None:
b = self.SubmitButton(label=result['submit_text'])
result['buttons'] = [b] + result['buttons']
result['extra_fields'] += result['buttons']
return result
def _all_fields(self):
return chain(super(SimpleForm, self)._all_fields(), self.buttons)
def _make_schema(self):
base_schema = super(SimpleForm, self)._make_schema()
if self.name:
return fes.Schema(**{self.name:base_schema,
'allow_extra_fields':True,
'filter_extra_fields':True})
else:
return base_schema