Hello,
I answer to myself, since it was not so complex ;) ... Oops!
Hum hum ...
Dominique

In Controller:
def search_form():
    q =
db(db.region.id==db.subregion.region).select(orderby=db.region.name |
db.subregion.name)

    def prepare_select(rows):
        """
        Creates a list to be used in the SELECT helper:
        ['Region A', OPTGROUP('SubRegion 1','SubRegion 2', 'SubRegion
3'),
        'Region B', OPTGROUP('SubRegion 4','SubRegion 5', 'SubRegion
6')]
        """
        l_r=[]
        for row in rows:
            r = row.region.name
            if row.region.name not in l_r:
                l_r.append(row.region.name)
        interm_list=[]
        for reg in l_r:
           l_sr=[]
           for row in rows:
                if reg == row.region.name:
                    l_sr.append(row.subregion.name)
           interm_list.append((reg,l_sr))
        res=[]
        for reg, l_sr in interm_list:
            res.append(reg)
            res.append(OPTGROUP(*l_sr))
        return res

    form=FORM(TR("",SELECT(*prepare_select(q),
**dict(_name='region_to_search',
value=request.vars.requested_categ_name))),
              TR("",INPUT(_type="submit",_value="Search")))

    if form.accepts(request.vars, session, keepvalues=True):
        request.vars.requested_categ_name = form.vars.region_to_search
        response.flash="%s"%form.vars.region_to_search

    return dict(form=form,)

Reply via email to