That works great, thank you!!!  My only remaining question is that when I 
try to edit the first record "main" in the appadmin I get the foreign key 
error.  I read here -> 
https://groups.google.com/forum/#!topic/web2py/klspqXpha4E <- about how to 
disable it.  Wasn't sure if I should do that or not...  The other records 
do not act up when changed, just that one so I'm sure I could work around 
that but, just in case someone else manages the site... I'm not sure.  
Thoughts?

On Tuesday, January 21, 2014 11:03:46 PM UTC-6, Massimo Di Pierro wrote:
>
> 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.

Reply via email to