Should be

    links = {
        'person':[lambda row: 
A(T('Delete'),_href=URL("configure","delete",args=["delete", 'person', 
row.id]))],
        'product':[lambda row: 
A(T('Delete'),_href=URL("configure","delete",args=["delete", product', 
row.id]))],
        'purchase':[lambda row: 
A(T('Delete'),_href=URL("configure","delete",args=["delete", 'purchase', 
row.id]))]
    }

without "db.". Almost all arguments in smartgrid can be dictionaries like 
{'tablename':value} as opposed to value.

On Friday, 1 November 2013 11:24:10 UTC-5, kw...@teradactyl.com wrote:
>
> Ok, first I tried to make a dictionary:
>
>     links = {
>         'db.person':[lambda row: 
> A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.person', 
> row.id]))],
>         'db.product':[lambda row: 
> A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.product', 
> row.id]))],
>         'db.purchase':[lambda row: 
> A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.purchase', 
> row.id]))]
>     }
>
> But I could not figure out the links=? argument for SQLFORM.smartgrid.
>
> I've been printing the request.args on each pages, so I tried to hardcode 
> based on argument numbers:
>
>     # request.args(3) == 'purchase.product_id'
>     if not request.args(3) == None:
>         links=[lambda row: 
> A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.purchase', 
> row.id]))]
>     # request.args(1) == 'product.seller_id'
>     elif not request.args(1) == None:
>         links=[lambda row: 
> A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.product', 
> row.id]))]
>     else:
>     # request.args(0) == 'person'
>         links=[lambda row: 
> A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.person', 
> row.id]))]
>     grid = 
> SQLFORM.smartgrid(db.person,linked_tables=['product','purchase'],
>                              user_signature=False, deletable=False, 
> csv=False, links=links)
>
> This works!  And I get the necessary information to process the delete in 
> the proper table
> after display/confirmation in configure/delete.
>
> However, this solution feels like I'm one step away from a real answer.  
> Is there a better
> way to determine how to pass to links=?
>
> Thanks for all your help!
> Kris
>
>
> On Friday, November 1, 2013 8:26:40 AM UTC-6, Massimo Di Pierro wrote:
>>
>> links = {'tablename':[lambda row: 
>> A(T('Delete'),_href=URL("configure","delete",args=["delete", 'tablename', 
>> row.id]))]}
>>
>> You can have one item for each tablename,
>>
>> On Friday, 1 November 2013 09:02:06 UTC-5, kw...@teradactyl.com wrote:
>>>
>>> I have a smartgrid example with delete button removed and a links=links 
>>> dictionary for delete:  
>>>
>>>     links=[lambda row: 
>>> A(T('Delete'),_href=URL("configure","delete",args=["delete", db.person, 
>>> row.id]))]
>>>
>>> For children in the smartgrid, the delete URL request args remains the 
>>> parent table name (db.person in this example).
>>> Is there a way to form links= such that the children will have their 
>>> table name attached to the URL
>>> (so I delete the child and not the parent)? 
>>>
>>> I found a horrible way to do this by placing the tablename inside the 
>>> db.py definition to pass to the delete URL
>>>
>>>     links=[lambda row: 
>>> A(T('Delete'),_href=URL("configure","delete",args=["delete", row.tablename, 
>>> row.id]))]
>>>
>>> but this was just an exercise and prone to way to many problems...
>>>
>>

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