Kind of...

Richard


On Thu, Feb 6, 2014 at 6:14 PM, Anthony <abasta...@gmail.com> wrote:

> Don't have time to process all this, but are you saying you have a row
> object and just need to know how to pass it to a custom widget?
>
>
> On Thursday, February 6, 2014 4:14:26 PM UTC-5, Richard wrote:
>>
>> Hello,
>>
>> I may ask something not realistic, I didn't think that much to this...
>>
>> But I found my self, I would really need to know the value of another
>> fields the than the field on which the widget is apply in other to init my
>> widget correctly. I found a workaround that would be as easy as passing the
>> value of those fields as a vars in the URL, but I feel that it is hacky
>> compare to having acces to row from widget, like reprensent...
>>
>> Just to be more specific... I use this widget, from s-cubism sqlab :
>>
>> https://github.com/BuhtigithuB/sqlabs/blob/patch-
>> 1/modules/plugin_lazy_options_widget.py
>>
>> That I modify to fix issue with initialisation on update form... The
>> thing is, that my fix is far from perfect, since the conditionnal field
>> (the one on which the widget have been declared) is not filtered out, only
>> the proper value for the conditionnal field is selected as it should on
>> form update...
>>
>> So, I thougt, that I can fix this like that :
>>
>> Defining another _get_select_el function (maybe not required, but for now
>> let use it) :
>>
>>     def _get_select_el_for_init(self, trigger, value=None):
>>         if trigger:
>>             self._require.orderby = self.orderby or self._require.orderby
>>             self._require.dbset = self._require.dbset(self.
>> where(trigger))
>>             options = self._require.options()
>>             opts = [OPTION(v, _value=k) for (k, v) in options]
>>             return DIV(SELECT(_id='%s__aux' % self._el_id, value=value,
>>                               
>> _onchange='jQuery("#%s").val(jQuery(this).val());'
>> % self._hidden_el_id,
>>                               *opts))
>>         else:
>>             return self.default
>>
>> Then
>>
>> I can do that :
>>
>>     if value:
>>             el = DIV(script_el,
>>                      SPAN(self._get_select_el_for_
>> init(trigger=self.conditional_field_value, value=value),
>>                           # SELECT(value=value,
>>                           #        _id='%s__aux' % self._el_id,
>>                           #        
>> _onchange='jQuery("#%s").val(jQuery(this).val());'
>> % self._hidden_el_id,
>>                           #        *[OPTION(v, _value=k) for (k, v) in
>> field.requires.options()],
>>                           #        ),
>>                           _id=self._disp_el_id),
>>                      INPUT(_value=value, _type='hidden',
>>                            _name=field.name, _id=self._hidden_el_id,
>>                            requires=field.requires),
>>                      _id=self._el_id)
>>         else:
>>             el = DIV(script_el,
>>                      SPAN(select_el or self.default,
>> _id=self._disp_el_id),
>>                      INPUT(_value=value, _type='hidden',
>>                            _name=field.name, _id=self._hidden_el_id,
>>                            requires=field.requires),
>>                      _id=self._el_id)
>>
>> Instead of what is commented out...
>>
>> self.conditional_field_value contain the id selected in the "master"
>> field.
>>
>> It would requires that I could do something like that :
>>
>> widget=lambda field, value, row: lazy_options_widget(field=field,
>>
>>  on_key='no_table_master_field__selected',
>>
>>  off_key='master_field__unselected',
>>
>>  where=lambda master_field: (db.lookuptable.master_field ==
>> row.master_field),
>>
>>  trigger=request.vars.master_field,
>>                                                              orderby=
>> db.lookuptable.id,
>>                                                              ...
>>                                                              )
>>
>> Does it make any sens or what?
>>
>> I can just do that instead :
>>
>>  if value:
>>             el = DIV(script_el,
>>                      SPAN(self._get_select_el_for_init(trigger=
>> *current.request.vars.conditional_field_value*, value=value),
>>                           # SELECT(value=value,
>>                           #        _id='%s__aux' % self._el_id,
>>                           #        
>> _onchange='jQuery("#%s").val(jQuery(this).val());'
>> % self._hidden_el_id,
>>                           #        *[OPTION(v, _value=k) for (k, v) in
>> field.requires.options()],
>>                           #        ),
>>                           _id=self._disp_el_id),
>>                      INPUT(_value=value, _type='hidden',
>>                            _name=field.name, _id=self._hidden_el_id,
>>                            requires=field.requires),
>>                      _id=self._el_id)
>>
>> And passing the vars into the URL...
>>
>> Thanks
>>
>> Richard
>>
>  --
> 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.
>

-- 
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.

Reply via email to