In db.py I defined the following table: db.define_table('cardfunction', Field('company_id',db.company,default='',notnull=True,unique=True), Field('home',type='boolean',default=True), Field('logo',type='boolean',default=False), Field('tagline',type='boolean',default=False), Field('image',type='boolean',default=False), Field('css',type='boolean',default=False), Field('customcss',type='boolean',default=False), Field('keywords',type='boolean',default=False), migrate=False)
Based on this table I would like to generate a menu. In a controller I got the following code: if not session.id or session.id!=auth.user.bedrijf_id: session.id=auth.user.bedrijf_id session.row=db(db.cardfunction.bedrijf_id==session.id).select(db.cardfunction.ALL) session.card_menu=[ ['Home',...], ['Logo',...], ... ['Keywords',...]] In a view I got the following code to generate the menu: {{if session.card_menu:}} <div class="sidebox" style="margin-top: 24px;"> <ul> {{for _name,_active,_link in session.card_menu:}} {{if session.row.home:}} <li> <a {{if _active:}} class="active" {{pass}} href="{{=_link}}">{{=_name}}</a> </li> {{else:}} <li> {{=_name}} </li> {{pass}} {{if session.row.logo:}} <li> <a {{if _active:}} class="active" {{pass}} href="{{=_link}}">{{=_name}}</a> </li> {{else:}} <li> {{=_name}} </li> {{pass}} ..... {{pass}} </ul> </div> <!-- sidebox --> {{pass}} I wonder whether there is a more efficient way to generate the menu, e.g. using an index instead of the field names: session.row.field_i where i ranges from 0 to 7. Kind regards, Annet.