Nice approach. I will try for my another project !
On Thursday, April 12, 2012 5:18:58 AM UTC-5, Javier wrote: > > I was working on a set menu from the database. It's simple and it can be > useful. > The model is simple, and has a condition to evaluate options when > generating the menu items. > The evaluation was done using the function 'eval'. > Attach model. > To manage SQLFORM.grid use or what you like > > db.define_table('menu', > Field('posicion',type='integer'), > Field('titulo',type='string'), > Field('controlador',type='string'), > Field('funcion',type='string'), > Field('padre'), > Field('condicion'), > ) > db.menu.padre.requires = IS_IN_DB(db, db.menu.id,'%(titulo)s') > db.menu.padre.represent = lambda id,row: db.menu(id).titulo > db.menu.condicion.default = 'True' > > response.title = settings.title > response.subtitle = settings.subtitle > response.meta.author = '%(author)s <%(author_email)s>' % settings > response.meta.keywords = settings.keywords > response.meta.description = settings.description > response.menu = [ ] > > > def add_item(nivel): > item = [] > for itemmenu in db((db.menu.padre == nivel) & (db.menu.id > > 1)).select(orderby=db.menu.posicion): > if eval(itemmenu.condicion): > > item.append([itemmenu.titulo,None,URL(itemmenu.controlador,itemmenu.funcion),add_item( > itemmenu.id) ]) > return item > > if auth.is_logged_in(): > response.menu = add_item(1) > > > On Thu, Apr 12, 2012 at 1:00 AM, Cliff <cjk...@gmail.com> wrote: > >> I have something like this working: >> >> sub_menu = [] >> if (auth.user_id != None) and ((auth.has_membership(role = 'admin'))): >> sub_menu = [('Admin', False, URL('admin')), ] >> response.menu = [('Home', False, URL('home','default','index'), []), >> (SPAN('Price List',_style='color:yellow'), True, >> URL('pricelist','default','index'), >> [('Guideline', False, URL('pricelist','default','guideline')), >> ('Multiplier Tables', False, >> URL('pricelist','default','multitable')), >> ('Cut Charge Tables', False, >> URL('pricelist','default','cuttable')), >> (sub_menu), >> ])] >> >> On Wednesday, April 11, 2012 12:24:29 PM UTC-4, Omi Chiba wrote: >>> >>> The following menu works. It's add "Admin" menu next to "Price List" if >>> the user has role "admin". Now, I want to add the "Admin" menu as sub-menu >>> of "Price List" where it's right after the "Cut Charge Tables". How can I >>> do this ? >>> >>> response.menu = [('Home', False, URL('home','default','index'), []), >>> (SPAN('Price List',_style='color:yellow'), True, >>> URL('pricelist','default','**index'), >>> [('Guideline', False, URL('pricelist','default','**guideline')), >>> ('Multiplier Tables', False, URL('pricelist','default','** >>> multitable')), >>> ('Cut Charge Tables', False, URL('pricelist','default','** >>> cuttable')), >>> ])] >>> >>> if (auth.user_id != None) and ((auth.has_membership(role = 'admin'))): >>> response.menu += [('Admin', False, URL('admin')), ] >>> >> >