Richard, wouldn't be better organizing your form direct in HTML using custom.form tags?

On 06/28/2012 01:00 PM, Richard Vézina wrote:
Forget the precedent email... I think I found how, it didn't work the
first time I try, so I just put everything into string, maybe I had
problem with a comma...

     inputs_list = []
     for a in field1_names_dict:

inputs_list.append(Field(field1_names_dict[a]['field1_name']+'_f1',
type='boolean', widget=SQLFORM.widgets.checkboxes.widget,
requires=IS_EMPTY_OR(IS_IN_SET([assay_names_dict[a]['field1_name_ui']]))))

inputs_list.append(Field(field1_names_dict[a]['field1_name']+'_f2',
db.ref_tab1, requires = IS_EMPTY_OR(IS_IN_DB(db,'ref_tab1.id
<http://ref_tab1.id>','%(REPRESENTFIELD)s'))))

inputs_list.append(Field(field1_names_dict[a]['field1_name']+'_f3',
db.ref_tab2, requires = IS_EMPTY_OR(IS_IN_DB(db,'ref_tab2.id
<http://ref_tab2.id>','%(REPRESENTFIELD)s'))))

I I just have to add the formstyle in the SQLFORM.factory call :

form = SQLFORM.factory(*inputs_list, formstyle='divs')

On Thu, Jun 28, 2012 at 11:47 AM, Richard Vézina
<[email protected] <mailto:[email protected]>> wrote:

    Hello Anthony,

    If I don't use eval(), should I use web2py dummy table, I don't see
    how I will be able to build dummy table dynamically and declare it
    as inputs_list to be use with the asterisk... If I just put a
    asterisk in front of my actual generated inputs_list it not working
    since the item in the list are text. I don't see how I can insert
    Field into the list without generating them as strings...

    I will read a bit the links you sent.

    Thanks.

    Richard


    On Thu, Jun 28, 2012 at 11:29 AM, Anthony <[email protected]
    <mailto:[email protected]>> wrote:

            I wounder what should be the best way to alter a form
            generated by SQLFORM.factory in a way where fields will be
            placed into a html table a 3 columns.

            So each 3 fields I need to insert a "tr" and each field need
            to be in a "td"...


        You might want to create a custom form layout in the view:
        http://web2py.com/books/default/chapter/29/7#Custom-forms. That
        way you can still use SQLFORM.factory to handle all the widget
        creation and processing, but you can present the fields however
        you want. You might also check out plugin_solidform
        <http://dev.s-cubism.com/plugin_solidform>.

                 formstring = "SQLFORM.factory(" +','.join(inputs_list)+")"

                 form = eval(formstring)


        No need to eval code like that in Python. If you have a list of
        objects you want to submit as separate args to a function, just
        precede the list with an asterisk:

        |
        form =SQLFORM.factory(*input_list)
        |

        In that case, you can change the way you define the Field items
        in the list -- make them actual Field() objects rather than just
        strings of code.

        Note, for keyword arguments, you can submit a dictionary
        preceded by two asterisks:

        |
        some_function(**some_dictionary)
        |

        Anthony




Reply via email to