예제 #1
0
def mybootstrap(form, fields):
    ''' bootstrap format form layout '''
    form.add_class('form-horizontal')
    parent = FIELDSET()
    for id, label, controls, help in fields:
        # wrappers
        _help = None
        if help:
            _help = SPAN(help, _class='help-block')

        if isinstance(controls, (str, int, SPAN)):
            controls = P(controls, _class="form-control-static")

        # submit unflag by default
        _submit = False

        if isinstance(controls, INPUT):
            if controls['_type'] == 'submit':
                # flag submit button
                _submit = True
                controls['_class'] = 'btn btn-primary'
            if controls['_type'] == 'file':
                controls['_class'] = 'input-file'

        if isinstance(label, LABEL):
            label['_class'] = 'col-sm-2 control-label'

        if _submit:
            # submit button has unwrapped label and controls, different class
            parent.append(DIV(DIV(controls,_class="col-sm-offset-2 col-sm-10"),
                _class='form-group form-group-sm', _id=id))
            # unflag submit (possible side effect)
            _submit = False
        else:
            # unwrapped label
            if _help:
                parent.append(DIV(label, DIV(controls, _help, _class="col-sm-10"),
                    _class='form-group form-group-sm', _id=id))
            else:
                parent.append(DIV(label, DIV(controls, _class="col-sm-10"),
                    _class='form-group form-group-sm', _id=id))
    return parent
예제 #2
0
 def test_FIELDSET(self):
     self.assertEqual(
         FIELDSET('<>', _a='1', _b='2').xml(),
         b'<fieldset a="1" b="2">&lt;&gt;</fieldset>')