diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 0a7b3cdb..0c888074 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -859,14 +859,14 @@ def formstyle_bootstrap3_stacked(form, fields): label = '' elif isinstance(controls, (SELECT, TEXTAREA)): controls.add_class('form-control') - + elif isinstance(controls, SPAN): _controls = P(controls.components) elif isinstance(controls, UL): for e in controls.elements("input"): e.add_class('form-control') - + if isinstance(label, LABEL): label['_class'] = 'control-label' @@ -909,9 +909,9 @@ def formstyle_bootstrap3_inline_factory(col_label_size=3): label = '' elif isinstance(controls, (SELECT, TEXTAREA)): controls.add_class('form-control') - + elif isinstance(controls, SPAN): - _controls = P(controls.components, + _controls = P(controls.components, _class="form-control-static %s" % col_class) elif isinstance(controls, UL): for e in controls.elements("input"): @@ -1838,15 +1838,19 @@ class SQLFORM(FORM): operators = SELECT(*[OPTION(T(option), _value=option) for option in options], _class='form-control') _id = "%s_%s" % (value_id, name) if field_type in ['boolean', 'double', 'time', 'integer']: - value_input = SQLFORM.widgets[field_type].widget(field, field.default, _id=_id, _class='form-control') + widget_ = SQLFORM.widgets[field_type] + value_input = widget_.widget(field, field.default, _id=_id, _class=widget_._class + ' form-control') elif field_type == 'date': - iso_format = {'_data-w2p_date_format' : '%Y-%m-%d'} - value_input = SQLFORM.widgets.date.widget(field, field.default, _id=_id, _class='form-control', **iso_format) + iso_format = {'_data-w2p_date_format': '%Y-%m-%d'} + widget_ = SQLFORM.widgets.date + value_input = widget_.widget(field, field.default, _id=_id, _class=widget_._class + ' form-control', **iso_format) elif field_type == 'datetime': - iso_format = {'_data-w2p_datetime_format' : '%Y-%m-%d %H:%M:%S'} - value_input = SQLFORM.widgets.datetime.widget(field, field.default, _id=_id, _class='form-control', **iso_format) + iso_format = {'_data-w2p_datetime_format': '%Y-%m-%d %H:%M:%S'} + widget_ = SQLFORM.widgets.datetime + value_input = widget_.widget(field, field.default, _id=_id, _class=widget_._class + ' form-control', **iso_format) elif (field_type.startswith('reference ') or field_type.startswith('list:reference ')) and \ + hasattr(field.requires, 'options') or \ hasattr(field.requires, 'options'): value_input = SELECT( *[OPTION(v, _value=k) @@ -1856,7 +1860,8 @@ class SQLFORM(FORM): elif field_type.startswith('reference ') or \ field_type.startswith('list:integer') or \ field_type.startswith('list:reference '): - value_input = SQLFORM.widgets.integer.widget(field, field.default, _id=_id, _class='form-control') + widget_ = SQLFORM.widgets.integer + value_input = widget_.widget(field, field.default, _id=_id, _class=widget_._class + ' form-control') else: value_input = INPUT( _type='text', _id=_id,