[web2py] Re: Passing values to widgets

2010-03-27 Thread Avik Basu
So, for my example, I tried your suggestion. I defined a widget in models/widgets.py: def units_widget(field,value,food_id): ... and then in the controller, I set the widget with: db.ate.units.widget = units_widget(food_id) But here I am not passing field and value so I get an error. What

[web2py] Re: Passing values to widgets

2010-03-27 Thread mr.freeze
You need to make your widget a class so you can pass args to it in the constructor: class Units_Widget(object): def __init__(**args): def widget(f,v): #build your widget #using args return widget db.ate.units.widget = Units_Widget(food_id) On Mar 27,

[web2py] Re: Passing values to widgets

2010-03-27 Thread mr.freeze
Sorry, the constructor should be: def __init__(*args,**kargs): On Mar 27, 10:53 am, mr.freeze nat...@freezable.com wrote: You need to make your widget a class so you can pass args to it in the constructor: class Units_Widget(object):     def __init__(**args):         def widget(f,v):      

[web2py] Re: Passing values to widgets

2010-03-27 Thread Avik Basu
I get the following error: TypeError: __init__() should return None, not 'function' I think the problem has to do with the following return statement in the constructor: return widget Avik On Mar 27, 11:57 am, mr.freeze nat...@freezable.com wrote: Sorry, the constructor should be: def

[web2py] Re: Passing values to widgets

2010-03-27 Thread Avik Basu
Also, if i wanted to extend SQLFORM.widgets.options.widget, how would i go about doing that? Is it as simple as replacing: class Units_Widget(object): with: class Units_Widget(SQLFORM.widgets.options.widget): Thanks, Avik On Mar 27, 5:03 pm, Avik Basu avikb...@gmail.com wrote: I get the

[web2py] Re: Passing values to widgets

2010-03-27 Thread mr.freeze
Sorry, low blood sugar. def units_widget(food_id): def widget(f,v): #build your widget #using food_id return widget db.ate.units.widget = units_widget(food_id) On Mar 27, 4:05 pm, Avik Basu avikb...@gmail.com wrote: Also, if i wanted to extend

[web2py] Re: Passing values to widgets

2010-03-27 Thread Avik Basu
That works perfectly. Thanks. Avik On Mar 27, 5:21 pm, mr.freeze nat...@freezable.com wrote: Sorry, low blood sugar. def units_widget(food_id):     def widget(f,v):        #build your widget        #using food_id     return widget db.ate.units.widget = units_widget(food_id) On Mar 27,

[web2py] Re: Passing values to widgets

2010-03-26 Thread DenesL
It depends on what specifically you are trying to accomplish. You could set the validator instead, for example: rr=db(db.food.name.like('m%')).select() db.ate.food_id.requires=IS_IN_SET([(r.id,r.name) for r in rr]) Denes On Mar 26, 6:26 pm, Avik Basu avikb...@gmail.com wrote: Is there a

[web2py] Re: Passing values to widgets

2010-03-26 Thread mdipierro
in the controller you can do db.table.field.widget = SomeWidgetConstructor(args) Not sure if this is what you are asking. On 26 Mar, 18:26, Avik Basu avikb...@gmail.com wrote: Is there a way to pass arguments to a field's widget from the controller?  For example: db.define_table(food,