In the end I have used a different slightly more messy approach. I am
getting the record id from the args by using a conditional to test if it is
in one of 2 possible positions.
@auth.requires_login()
def contact_manage():
form =
SQLFORM.smartgrid(db.t_contact,linked_tables=['t_courses','t_membership','t_paypal'],
onupdate=auth.archive, formname="Contact Manager")
if request.args(2) == 't_contact':
memberId = request.args(3)
else:
memberId = request.args(2)
return locals()
I looked into fetching it using similar code to your link function but it
seems you can only request the id of the current record using
db.t_contact.id from within the parameters of your SQLFORM.smartgrid
request.
Its a dirty hack but it seems to work.
Mike
On Tuesday, 20 November 2012 07:15:22 UTC, Johann Spies wrote:
>
> On 19 November 2012 14:58, Michael Hall <[email protected] <javascript:>>wrote:
>
>> Hi Villas
>>
>> I like the idea of using a var instead of args but I am still uncertain
>> of how I get the ID of the current record I am viewing/editing in smartgrid.
>>
>>
> Here is an example of code I am using where 'auid' represents the id of
> the author record:
>
> links = [lambda row: (A(B(T('Edit')), _target = "_blank",
> _href = URL(r = request,
> c = 'authors',
> f = 'edit_author',
> vars = dict(auid = str(row[
> db.akb_authors.id])))))]
> query = ...
> fields = [list of fields]
>
> I then call the grid with SQLFORM.grid(query, fields=fields, links=links)
>
>
> Regards
> Johann
> --
> Because experiencing your loyal love is better than life itself,
> my lips will praise you. (Psalm 63:3)
>
>
--