looks like it's getting closer, but receive this error: <type 'exceptions.TypeError'> 'str' object is not callable On Monday, September 16, 2013 8:46:48 AM UTC-7, Adi wrote: > > if you replace the grid part, does this work: > > > grid = SQLFORM.grid(db.Idea,editable=is_owner, > deletable=is_owner, > user_signature=True, > fields=[db.Idea.ideaShortSummary, > db.Idea.created_by, > db.Idea.id], > headers={ 'Idea.ideaShortSummary':'Description'}, > maxtextlengths={ 'Idea.ideaShortSummary':140}, > links = dict(Idea=[lambda row: A('Post comment', > _class="btn > btn-mini", > _href=URL( > 'comment_on_a_suggestion', vars=dict(filter=row.id)) > ), > lambda row: A('Post comment', > _class="btn > btn-mini", > _href=URL( > 'comment_on_a_suggestion', vars=dict(filter=row.id)) > ), > > ], > ) > ) > > > > > > On Monday, September 16, 2013 11:26:18 AM UTC-4, Alex Glaros wrote: >> >> Hi Adi and Javier, >> >> I can't get the syntax to work. Can you please baby me though the >> phrasing and just copy the first button twice in this working example so >> that two identical buttons appear? >> >> def view_suggestions(): >> db.Idea.id.represent = lambda id, r: A('Post shared services idea', >> _href=URL('add_sharability_info_to_a_suggestion', >> vars=dict(filter=id)),_class="btn btn-mini") >> is_owner = (lambda row: row.created_by == auth.user_id) if auth.user >> else False >> grid = SQLFORM.grid(db.Idea,editable=is_owner, deletable=is_owner, >> user_signature=True,fields=[db.Idea.ideaShortSummary,db.Idea.created_by, >> db.Idea.id], headers={ 'Idea.ideaShortSummary':'Description'}, >> maxtextlengths={ 'Idea.ideaShortSummary':140},links = [dict(header='Post >> comment', body=lambda row: A('Post comment',_class="btn btn-mini", >> _href=URL('comment_on_a_suggestion', vars=dict(filter=row.id))))]), >> return dict(grid = grid) >> >> >> thanks, >> >> Alex >> >> On Monday, September 16, 2013 7:10:09 AM UTC-7, Adi wrote: >>> >>> actually, you can also define a table that links apply to. this way you >>> won't get the error, when applying functionality to a wrong table... >>> >>> links=dict(purchase_order=[ >>> lambda row:(_get_order_details(row)), >>> lambda row: A('Duplicate', >>> _class='button', _href=URL( >>> 'duplicate_po',args=[row.id])), >>> lambda row: A('Print', _class='button',_href >>> =URL('print_all',args=[row.id])) >>> ], >>> other_table=[ >>> lambda row:(_get_something_else(row)), >>> ],), >>> >>> >>> >>> >>> >>> >>> >>> On Monday, September 16, 2013 9:42:22 AM UTC-4, Javier Pepe wrote: >>>> >>>> You need pass a list of dict >>>> >>>> links = [{'header':'', 'body': lambda row: >>>> A('',_title='Procesar',_class='icon-refresh',_href=URL(c='planilla', >>>> {'header':'', 'body': lambda row: >>>> A('',_title='Mail',_class='icon-envelope',_href='index/pedircontadores/% >>>> {'header':'', 'body': lambda row: >>>> A('',_title='Estado',_class='icon-ok',callback=URL(c='planilla',f='estad >>>> {'header':'', 'body': lambda row: >>>> A('',_title='Control',_class='icon-check',_href=URL(c='planilla',f='pdf/ >>>> {'header':'', 'body': lambda row: A('',_title='Control >>>> 2',_class='icon-check',_href=URL(c='planilla',f='co >>>> {'header':'', 'body': lambda row: >>>> A('',_title='PDF',_class='icon-print',_href=URL(f='pdf/%s/%s' % (row.id >>>> , >>>> {'header':'', 'body': lambda row: A('',_title='PDF >>>> distribuidor',_class='icon-print',_href=URL(f='pdf/%s/% >>>> {'header':'', 'body': lambda row: >>>> A('',_title='Detalle',_class='icon-list',_href=URL(c='detalle',f='index' >>>> ] >>>> >>>> >>>> >>>> On Sun, Sep 15, 2013 at 9:31 PM, Alex Glaros <alexg...@gmail.com>wrote: >>>> >>>>> What is syntax for TWO or more buttons? I've tried several >>>>> variations. Would it be two "dict" phrases, or two header phrases >>>>> separated >>>>> by commas? >>>>> >>>>> One button will call one function, and the other would call a >>>>> different function. >>>>> >>>>> thanks, >>>>> >>>>> Alex >>>>> >>>>> >>>>> On Saturday, September 14, 2013 6:56:24 PM UTC-7, Alex Glaros wrote: >>>>>> >>>>>> Works perfect Adi and Villas, >>>>>> >>>>>> much appreciated. >>>>>> >>>>>> Here's the complete code: >>>>>> >>>>>> def view_all_suggestions_and_**comments(): >>>>>> query = (db.IdeaComment.ideaID==db.**Idea.id <http://db.Idea.id>) >>>>>> & (db.IdeaComment.partyID==db.**Party.id <http://db.Party.id>) >>>>>> grid = SQLFORM.grid(query, ,links = [dict(header='Virtual Field', >>>>>> body=lambda row: A('Add a comment!',_class="btn btn-mini", >>>>>> _href=URL('comment_on_a_**suggestion', vars=dict(filter=row.Idea.id)) >>>>>> **))]) >>>>>> return dict(grid = grid) >>>>>> >>>>>> Alex >>>>>> >>>>>> >>>>>> On Saturday, September 14, 2013 6:01:33 PM UTC-7, Adi wrote: >>>>>>> >>>>>>> lambda row: A('Complete', >>>>>>> _class='btn', _id='btn_complete' >>>>>>> , >>>>>>> _onclick='return >>>>>>> confirm("Complete Order %s? (%s %s)")' % (row.id, >>>>>>> >>>>>>> row.shipFirstName, >>>>>>> >>>>>>> row.shipLastName), >>>>>>> _href=URL(r=request,f='** >>>>>>> complete_order',args=[row.id])**, >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Saturday, September 14, 2013 7:41:24 PM UTC-4, Alex Glaros wrote: >>>>>>>> >>>>>>>> it works correctly Villas, thanks. >>>>>>>> >>>>>>>> how could I turn "Add a comment!" text into a button. Possible >>>>>>>> syntax ",_class="btn btn-mini"", but where does it go? >>>>>>>> >>>>>>>> thanks, >>>>>>>> >>>>>>>> Alex >>>>>>>> >>>>>>>> On Saturday, September 14, 2013 10:23:00 AM UTC-7, villas wrote: >>>>>>>>> >>>>>>>>> Maybe this would work using row.idea.id like this... >>>>>>>>> >>>>>>>>> grid = SQLFORM.grid(query, >>>>>>>>> links = [dict(header='Virtual Field', >>>>>>>>> body=lambda row: A('Add a comment!', _href=URL('comment_on_a_* >>>>>>>>> *suggestion', vars=dict(filter=row.idea.id <http://row.id/>))**) >>>>>>>>> )] >>>>>>>>> ) >>>>>>>>> >>>>>>>>> >>>>>>>>> You can also now include "virtual fields" in grids, but I haven't >>>>>>>>> needed to try that yet. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Saturday, 14 September 2013 15:23:49 UTC+1, Alex Glaros wrote: >>>>>>>>>> >>>>>>>>>> thanks Villas but I receive this error: Row' object has no >>>>>>>>>> attribute 'id' >>>>>>>>>> >>>>>>>>>> perhaps it doesn't know which of the joined "id"s to reference >>>>>>>>>> >>>>>>>>>> this work-around works because it let's system know which id it >>>>>>>>>> is: db.Idea.id.represent = lambda id, r: A('Add a comment!', >>>>>>>>>> _href=URL('comment_on_a_sugges**tion', vars=dict(filter=id))) >>>>>>>>>> >>>>>>>>>> Alex >>>>>>>>>> >>>>>>>>>> On Saturday, September 14, 2013 4:56:33 AM UTC-7, villas wrote: >>>>>>>>>>> >>>>>>>>>>> Try this... >>>>>>>>>>> >>>>>>>>>>> grid = SQLFORM.grid(query, >>>>>>>>>>> ** links = >>>>>>>>>>> [dict(header='Virtual Field', >>>>>>>>>>> ** >>>>>>>>>>> body=lambda row: A('Add a comment!', >>>>>>>>>>> _href=URL('comment_on_a_**suggestion', >>>>>>>>>>> vars=dict(filter=row.id))) >>>>>>>>>>> ** )] >>>>>>>>>>> ** ) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Friday, 13 September 2013 21:57:28 UTC+1, Alex Glaros wrote: >>>>>>>>>>>> >>>>>>>>>>>> I tried this but got "lambda requires 2 args, 1 given" error, >>>>>>>>>>>> plus need to be able to pass Idea.id parm to the button. How to >>>>>>>>>>>> do that? >>>>>>>>>>>> >>>>>>>>>>>> grid = SQLFORM.grid(query,links = [dict(header='Virtual >>>>>>>>>>>> Field',body=lambda id, r: A('Add a comment!', >>>>>>>>>>>> _href=URL('comment_on_a_ >>>>>>>>>>>> **suggestion', vars=dict(filter=id))))]) >>>>>>>>>>>> >>>>>>>>>>>> On Friday, September 13, 2013 1:33:35 PM UTC-7, villas wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Hope this helps... >>>>>>>>>>>>> >>>>>>>>>>>>> From the book: >>>>>>>>>>>>> >>>>>>>>>>>>> links is used to display new columns which can be links to >>>>>>>>>>>>> other pages. The links argument must be a list of >>>>>>>>>>>>> dict(header='name',body=lambda >>>>>>>>>>>>> row: A(...)) where header is the header of the new column and >>>>>>>>>>>>> body is a function that takes a row and returns a value. In >>>>>>>>>>>>> the example, the value is a A(...) helper. >>>>>>>>>>>>> >>>>>>>>>>>>> Example: >>>>>>>>>>>>> >>>>>>>>>>>>> linkbtns = [ >>>>>>>>>>>>> lambda row: SPAN('Mag',_class="label >>>>>>>>>>>>> label-success") \ >>>>>>>>>>>>> if row.status =='Y' else '', >>>>>>>>>>>>> lambda row: SPAN('Web',_class="label >>>>>>>>>>>>> label-success") \ >>>>>>>>>>>>> if row.is_active else '', >>>>>>>>>>>>> lambda row: A( I('',_class="icon-eye-open")+' >>>>>>>>>>>>> View', >>>>>>>>>>>>> _href=URL("view",args=[row >>>>>>>>>>>>> .id]**), >>>>>>>>>>>>> _class="btn btn-small" >>>>>>>>>>>>> ), >>>>>>>>>>>>> lambda row: A( I('',_class="icon-edit")+' >>>>>>>>>>>>> Edit', >>>>>>>>>>>>> _href=URL("edit",args=[row >>>>>>>>>>>>> .id]**), >>>>>>>>>>>>> _class="btn btn-small" >>>>>>>>>>>>> ), >>>>>>>>>>>>> lambda row: A( I('',_class="icon-road")+' >>>>>>>>>>>>> Map', >>>>>>>>>>>>> _href=URL('default', >>>>>>>>>>>>> 'geocoder'**,args=['caclient',row.id],vars**={'title':row. >>>>>>>>>>>>> business}), >>>>>>>>>>>>> _class="btn btn-small" >>>>>>>>>>>>> ), >>>>>>>>>>>>> ] >>>>>>>>>>>>> grid = SQLFORM.grid(....... links=linkbtns, .......) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Friday, 13 September 2013 21:00:56 UTC+1, Alex Glaros wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> How do I add a button "Add a comment!" in every row of a >>>>>>>>>>>>>> grid? It's a kind of virtual column. >>>>>>>>>>>>>> >>>>>>>>>>>>>> The below works, it takes user exactly to the correct row in >>>>>>>>>>>>>> the next table, but I use up one of the fields (Idea.id). How >>>>>>>>>>>>>> do I just >>>>>>>>>>>>>> create text/virtual column that doesn't sacrifice existing field? >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> def view_all_suggestions_and_**comments(): >>>>>>>>>>>>>> db.Idea.id.represent = lambda id, r: A('Add a comment!', >>>>>>>>>>>>>> _href=URL('comment_on_a_**suggestion', >>>>>>>>>>>>>> vars=dict(filter=id))) >>>>>>>>>>>>>> query = >>>>>>>>>>>>>> (db.IdeaComment.ideaID==db.**Idea.id<http://db.Idea.id>) >>>>>>>>>>>>>> & (db.IdeaComment.partyID==db.**Party.id <http://db.Party.id> >>>>>>>>>>>>>> ) >>>>>>>>>>>>>> grid = SQLFORM.grid(query) >>>>>>>>>>>>>> return dict(grid = grid) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> I read the book but need exact syntax for this situation. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Alex Glaros >>>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>> 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+un...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>> >>>> >>>>
-- 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.