Sorry typo. Let's try again: db.define_table('store_catalog', Field('title'), Field('slug',requires=IS_SLUG(),compute=lambda row: IS_SLUG.urlify(row.titl\ e)), Field('parent_id','reference store_catalog'))
id1 = db.store_catalog.insert(title='main') id2 = db.store_catalog.insert(title='one',parent_id=id1) id3 = db.store_catalog.insert(title='two',parent_id=id2) def menu_rec(items): return [(x.title,None,URL('action',args=x.slug),menu_rec(x\ .children)) for x in items or []] response.menu = menu_rec(db(db.store_catalog).select().as_trees()) print response.menu On Tuesday, 21 January 2014 12:17:19 UTC-6, web2pygroup wrote: > > Here's what I've tried so far and here's the results if it helps any to > get me on the right track, plus I hope this helps someone else looking for > this to because this is something very commonly done in PHP. > > I have tried changing this: > response.menu3[-1]+=([[(T(subcat.subcategory)), False, 'link',]]) > > to this: > response.menu3[-1]+=([(T(subcat.subcategory)), False, 'link',]) > > Which changes the output in the shell to: > [<lazyT 'Catalog'>, > False, > '', > [<lazyT 'Animals'>, > False, > 'link', > <lazyT 'Dogs'>, > False, > 'link', > <lazyT 'Cats'>, > False, > 'link']] > > Which obviously isn't correct. > > Continuing: > > original: > response.menu3[-1]+=([[(T(subcat.subcategory)), False, 'link',]]) > > to this: > response.menu3+=([[(T(subcat.subcategory)), False, 'link',]]) > > Gives this in the shell output: > [<lazyT 'Catalog'>, > False, > '', > [<lazyT 'Animals'>, False, 'link'], > [<lazyT 'Dogs'>, False, 'link'], > [<lazyT 'Cats'>, False, 'link']] > > Again obviously incorrect. Continuing: > > original: > response.menu3+=([[(T(subcat.subcategory)), False, 'link',]]) > > changed: > response.menu3[-1]+=((T(subcat.subcategory)), False, 'link',) > > Shell output shows: > [<lazyT 'Catalog'>, > False, > '', > [<lazyT 'Animals'>, > False, > 'link', > <lazyT 'Dogs'>, > False, > 'link', > <lazyT 'Cats'>, > False, > 'link']] > > I tried additional variations but, not sure how much space we have here to > keep going with my 2 weeks worth of work. Essentially the end result is > the same a bracket missing to seperate the subcategories. I've been able > to modify and add to lists before, however I've never really experienced a > situation where the negative slice appears to be ignored (removing the > bracket at the end of dogs and beginning of cats as it is doing for the > main category Animals as can be seen), even removed the negative slice > ([-1]) for the main categories iteration and when I do it clearly shows > that it is actually doing the negative slice properly because the brackets > come back at the end of Animals, unlike the subcategories that do not > appear to be removing the bracket(s) > > > On Monday, January 20, 2014 2:33:50 PM UTC-6, web2pygroup wrote: >> >> >> Hi all, >> >> I have been trying for a little over 2 weeks to figure this out... >> >> I'm trying to generate a menu that drops down, I have been able to >> statically create it by overwriting sample app that has the same drop down >> menu like the web2py.com site. >> >> I have this in my db.py: >> db.define_table('store_catalog', >> Field('maincategory', 'string'), >> Field('subcategory', 'string'), >> Field('description', 'text')) >> >> >> in my menu.py I have gotten this so far: >> response.menu=[] >> response.menu.append([T('Catalog'), False, '', >> [(T('%s' % menucatchoice['maincategory']), False, 'link', >> [(T('%s' % menucatchoice['subcategory']), False, >> 'link'),]) for menucatchoice in rows ] ]) >> >> It gets me a drop down menu except that for each subcategory it repeats >> adding it to the main category. Let's say there is only 1 main category and >> 2 subs that go after that >> Catalog (this just shows with the caret next to it as intended) >> MainCategory >> Sub >> Sub >> What I have does put the "Catalog" for the first but, what I get is: >> MainCategory >> (blank) >> MainCategory(don't want this it's being repeated) >> Subcategory >> MainCategory(and this one is also a repeat) >> Subcategory >> >> I have tried to break out the response.menu with so many different >> .appends it's not funny. I have also tried adding the "[-1]". This was >> the closest I have gotten to what I want it to look like. I'm at an >> absolute loss on this, any and all help would be greatly appreciated. >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.