This line:

_controls = DIV(controls, _help, _class='col-sm-6 controls')

puts the content inside the DIV in question. If you don't want that in case 
of read-only fields, you'll need to first check whether "controls" is a 
form widget (i.e., input, select, or textarea), and don't wrap it in the 
DIV if not.

Anthony

On Monday, January 20, 2014 3:41:44 AM UTC-5, Annet wrote:
>
> Hi Anthony,
>
> Thanks for your reply.
>
> I have a table named register:
>
> db.define_table('register',
>     Field('nodeID', 'reference node', writable=False, readable=False),
>     Field('interfaceCategoryID', 'reference interface_category', 
> writable=False, readable=False),
>     ...
>     migrate=False)
>
>
> In the register function I have the following lines of code:
>
> form=SQLFORM(db.register, labels=dict(agreedTaC='', agreedDirectDebit=''), 
> separator='', formstyle=bootstrap3)
>
>
> bootstrap3 is a function in a module:
>
> def bootstrap3(form, fields):
>     form.add_class('form-horizontal')
>     parent = FIELDSET()
>     for id, label, controls, help in fields:
>         if not help:
>             _help = ''
>         else:
>             # wrappers
>             _help = SPAN(help, _class='help-block')
>         # embed _help into _controls
>         _controls = DIV(controls, _help, _class='col-sm-6 controls')
>         # submit unflag by default
>         _submit = False
>
>         if isinstance(controls, INPUT):
>             if controls['_type'] not in ['file', 'checkbox', 'radio']:
>                 controls.add_class('form-control')
>             if controls['_type'] == 'submit':
>                 # flag submit button
>                 _submit = True
>                 controls['_class'] = 'btn btn-primary'
>             if controls['_type'] == 'file':
>                 controls['_class'] = 'input-file'
>
>         # For password fields, which are wrapped in a CAT object.
>         if isinstance(controls, CAT) and isinstance(controls[0], INPUT):
>             controls[0].add_class('form-control')
>
>         if isinstance(controls, SELECT):
>             controls.add_class('form-control')
>
>         if isinstance(controls, TEXTAREA):
>             controls.add_class('form-control')
>
>         if isinstance(label, LABEL):
>             label['_class'] = 'col-sm-4 control-label'
>
>         if _submit:
>             # submit button has unwrapped label and controls, different 
> class
>             parent.append(DIV(label, controls, _class='col-sm-offset-4 
> col-sm-6 form-actions', _id=id))
>             # unflag submit (possible side effect)
>             _submit = False
>         else:
>             # unwrapped label
>             parent.append(DIV(label, _controls, _class='form-group', 
> _id=id))
>     return parent
>
> The problem is that in a read only field its contents is aligned to the 
> top i.e it has no top
> padding. I first solved the problem by adding a selector to my css file 
> based on the
> label's id and the div's class. But, as I said I have more read only 
> fields, so I ended up
> with a selector for every read only field. That's why I am looking for a 
> more generic
> solution.
>
> I hope I provided you with enough information to help me solve the problem.
>
>
> Kind regards,
>
> Annet
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to