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,)