You both are righ:
What's work now (also should worke before):
selectable=[('change price 100', lambda ids: modify_price(ids,100) ), ]
and the function in the same controller:
def modify_price(ids,inc):
print request.vars.records
print ids
print inc
Both request.vars.records and ids are lists also with only one selected
Thanks for help
On Sunday, April 21, 2019 at 1:56:09 AM UTC+2, Anthony wrote:
>
> On Saturday, April 20, 2019 at 8:52:01 AM UTC-4, icodk wrote:
>>
>> Hi Antony
>>
>> My selectable looks like :
>>
>> selectable = [('Add 100 to price',lambda ids: redirect(URL('product',
>> 'modify_price', args=request.args, vars=dict(id=ids, inc=100)))),
>>
>>
> Why do a redirect rather than simply doing the work in the same function?
> Also, this redirect puts the ids in the URL query string, resulting in the
> ultimate update being a GET request rather than a POST -- this is
> undesirable because a refresh of that page will result in the entire
> operation being repeated, which you don't want.
>
>
>>
>> and my function in the product controller looks like this:
>>
>> def modify_price():
>>
>> if type(request.vars.id) is str:
>>
>> id_list = request.vars.id.split(',') #convertint to list
>>
>> else:
>>
>> id_list = request.vars.id
>>
>> db(db.product.id.belongs(id_list)).update(product_price=db.product.product_price+request.vars.inc)
>>
>>
>> Simply following the documentation in the book
>>
>> I also tried:
>>
>> selectable= lambda ids: modify_price
>>
>>
>> But the function neve called
>>
>
> It's not that the function never gets called but that the function is not
> written to work this way. The function expects to find ids in
> request.vars.id, but that is actually None in the case where you call it
> this way (the real values are in request.vars.records). Is modify_price a
> controller action that needs to be accessible separately from this
> particular operation? If not, just make it a helper function that accepts
> an "ids" argument, and set selectable=modify_price.
>
> Anthony
>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.