Bingo!

Martin, Cliff, your suggestion worked very well for me. Here is the
reqstatus() function in the controller. I call this function from
another function with below statement for SQLForm.grid using links for
custom button to fire this code-

#Link in other fucntion---
links = [lambda row: A(SPAN(_class='icon plus'),'Add
Friend',_class='positive
button',_href=URL("default","reqstatus",args=[row.id]))]

#------request status function---
def reqstatus():

    #Below code was missing
    session.friendid = request.args[0] # Gets the id of friends from
this page from links row in find_friends()

    #Updates the status for another table---
    db((db.friends.reguserid==session.logged_in_user_id) &
(db.friends.friendid==session.friendid) ).update(status='Sent')

    return dict()

What I wanted to do was -> get the row.id from one table and use that
row.id to fire queries on other tables. A session variable storing
request.args[0] helped me achieve this. Thank you very much
Everyone..

Happy Christmas to you All... Happy Holidays :-)

Thanks Everyone, Rahul D (www.flockbird.com - web2py powered)

-----------------------------------------------------

On Dec 21, 6:35 pm, Cliff <cjk...@gmail.com> wrote:
> Rahul,
>
> What is not working?
>
> When you click the button, does your reqstatus function fire at all?
>
> You can find out by inserting "print 'hello, world'" as the first line
> of the function, then looking at the web2py console for output.  If
> you run in command line, the rocket output shows up in the terminal
> session where you started web2py.
>
> If the function isn't firing, then your link is malformed.
>
> If the function is firing and the table isn't being updated then your
> problem is somehow in the function.  Expanding on Martin's suggestion,
> something like this should work.
>
> query = db.mytable.id == request.args[0]
> db(query).update(myfield = some_value)
>
> links = [lambda row: A(SPAN(_class='icon plus'),'Send
> Request',_class='positive
> button',_href=URL("default","reqstatus",args=[row.id]))]
>
> On Dec 21, 5:54 am, Martín Mulone <mulone.mar...@gmail.com> wrote:
>
>
>
>
>
>
>
> > I'm not sure what you want but you can pass args to grid. Like:
>
> > row_id = request.args[0]
> > query = (db.mytable.id == row_id)
>
> > table = SQLFORM.grid(query,
> >                         ...
> >                         args=request.args,
> >                         ...
> >                         )
>
> > 2011/12/21 Rahul <rahul.dhak...@gmail.com>
>
> > > Hi Johann,
> > >         Here are the details ---
>
> > > I have two tables - I need to grab the id of a contact from first
> > > table and use it to update a field status with values as Sent, Request
> > > etc.  in another table id being the same in both the table.
> > > Now in the below code, "Send Request" is just a button.
>
> > > links = [lambda row: A(SPAN(_class='icon plus'),'Send
> > > Request',_class='positive
> > > button',_href=URL("default","reqstatus",args=[row.id]))]
>
> > > This code is using the id (row.id)  from my contact table which is
> > > fine. Now, I want to use this id to send a request (using "Send
> > > Request" button in this grid) through reqstatus function. reqstatus is
> > > a separate function in my controller.
>
> > > My problem is how can I use the row.id of this sqlform.grid  any
> > > particular row and send a status update for a different table using
> > > this id.
>
> > > In short i want to use the above [row.id] in a separate function and
> > > pass it in a query. How can I achieve it? I hope I am clear this time.
> > > Let me know if case you need more details.
>
> > > I checked the below link  - but could not get it
> > >http://www.mail-archive.com/web2py@googlegroups.com/msg77334.html
>
> > > Thanks, Rahul D (www.flockbird.com-web2py powered)
> > > ------------------------
>
> > > On Dec 20, 6:31 pm, Johann Spies <johann.sp...@gmail.com> wrote:
> > > > On 20 December 2011 14:25, Rahul <rahul.dhak...@gmail.com> wrote:
>
> > > > > @Johann, below code does not work for me. :(
> > > > >     links = [lambda row: A('Edit' , _href = URL('default',
> > > > > 'edit_journal', args = [row.id]))]
>
> > > > > I used details='False'  and it does not show the buttons to me, but
> > > > > shows my custom button only which is what I intended.
>
> > > > details = False  not details = 'False'
>
> > > > That disable the 'View' button.
>
> > > > > Again for the community - -----------
> > > > > I was just wondering if I can use the row.id or any information with
> > > > > sqlform.grid -
> > > > > Below is the link I have defined to show a button called Send Request.
> > > > > I have re-directed it to use a custom function "regstatus" that passes
> > > > > a row.id argument.
> > > > > ---code---
> > > > > links = [lambda row: A(SPAN(_class='icon plus'),'Send
> > > > > Request',_class='positive
> > > > > button',_href=URL("default","reqstatus",args=[row.id]))]
> > > > > ---
> > > > > I want to know how can I use the row.id  (in above -> args=[row.id])
> > > > > value and use it to make queries considering I want to use this id in
> > > > > my function "reqstatus" above -
>
> > > > > Example- I would like to send some request to the record (row id) on
> > > > > which I am say a friend request etc.
>
> > > > > Can we achieve this?
>
> > > > It is still unclear to me what you want to do and what the problem is
> > > using
> > > > row.id.
>
> > > > What is 'Send Request'?
>
> > > > Maybe if you show your code it will get clearer.
>
> > > > Regards
> > > > Johann
>
> > > > --
> > > > Because experiencing your loyal love is better than life itself,
> > > > my lips will praise you.  (Psalm 63:3)
>
> > --
> >  http://martin.tecnodoc.com.ar

Reply via email to