As Anthony suggested in the workarounds:

--

city_widget = SQLFORM.widgets.autocomplete(request, db.city.name,
id_field=db.city.id)
city_widget.url = URL(args=request.args, vars=request.get_vars)
db.person.city.widget = city_widget
--

turn to another problem, this is the content of request.vars for the
callback from autocomplete:

<Storage {'step': '1?_autocomplete_city_name=xx'}>

It should be:

<Storage {'step': '1' , '_autocomplete_city_name': 'xx'}>

As you can see, autocomplete just add his parameters to the url
assuming there are no other.

2015-09-20 9:01 GMT-04:00, Yoel Benitez Fonseca <[email protected]>:
> Thank's Antony for the replay, i'll create the issue.
>
> The error in the code come from my adaptation of the real code to the
> example posted in my original question.
>
> The reason I ask is because I have already taken account of these
> three possible workarounds and i think we can do better.
>
> 2015-09-19 16:09 GMT-04:00, Anthony <[email protected]>:
>> It won't always be desirable to preserve the original query string
>> because
>> the Ajax callback is not really requesting the original parent page but
>> instead merely using the original action to access the autocomplete
>> functionality. However, it would probably be a good idea to add an option
>> to the autocomplete widget allowing the query string to be preserved, so
>> you should submit a github issue about this (link back to this thread).
>>
>> For now, though, there are three possible workarounds:
>>
>>    1. Because the URL args are preserved, you can put the step in a URL
>> arg
>>
>>    instead of a "step" variable in the query string.
>>    2. You can store the step in the session rather than in the URL (not
>>    good for bookmarking).
>>    3. You can manipulate the widget after it has been instantiated
>> (haven't
>>
>>    tried it, but I think it should work):
>>
>>         city_widget = SQLFORM.widgets.autocomplete(request, db.city.name,
>> id_field=db.city.id)
>>         city_widget.url = URL(args=request.args, vars=request.get_vars)
>>         db.person.city.widget = city_widget
>>
>> Also, note that there is an error in your code -- you are assigning the
>> widget to db.person.city rather than to db.person.city.widget.
>>
>> Anthony
>>
>> On Saturday, September 19, 2015 at 11:05:52 AM UTC-4, Yoel Benitez
>> Fonseca
>> wrote:
>>>
>>> hi! i have been struggling with a annoying bug, i got a this in a
>>> controller:
>>>
>>> ---
>>> def some_function():
>>>     if not request.vars.step:
>>>         redirect(URL('some_function', vars=dict(step=1)))
>>>     # ----
>>>     # a lot of stuff in the middle
>>>     # ----
>>>     if request.vars.step = '3':
>>>         db.person.city = SQLFORM.widgets.autocomplete(request,
>>>             db.city.name, id_field=db.city.id)
>>>         form = SQLFORM.factory(db.person):
>>>         if form.process().accepted:
>>>             # do some stuff
>>>             pass
>>>     # more stuff...
>>> ---
>>>
>>> The problem is that the autocomplete callback overwrite anything in
>>> request.vars and only left his own parameter _autocomplete_city_name,
>>> is this the intended behavior ? i mean for me it have more sense that
>>> the autocomplete callback add what it need and leave the others things
>>> in place.
>>>
>>> --
>>> Msc. Yoel Benítez Fonseca
>>> Especialista en TI
>>> http://redevil.cubava.cu/
>>> Tel.: (53 32)284701
>>>
>>
>> --
>> 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.
>>
>
>
> --
> Msc. Yoel Benítez Fonseca
> Especialista en TI
> http://redevil.cubava.cu/
> Tel.: (53 32)284701
>


-- 
Msc. Yoel Benítez Fonseca
Especialista en TI
http://redevil.cubava.cu/
Tel.: (53 32)284701

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

Reply via email to