I have a lot of code wrote in this sintax, But, ig its wrong, no problem to 
replace.

Will this still works?

_href=URL(request.application,'plugin_wiki','page',args=[row,])

Sent from my iPhone

On 30/07/2010, at 04:05, mdipierro <[email protected]> wrote:

> You are right but it only breaks backward compatibility in a case
> where things would be misleading. Here are some example:
> 
> # old syntax that still works
> URL('a','c','f')
> URL(a='a',c='c',f='f')
> URL(f='f',r=request)
> 
> #new syntax that resulted in an error before
> URL('f')
> URL('c','f')
> URL(f='f')
> URL(c='c',f='f')
> 
> ## changed of behaviour
> URL('a',r=request)
> was /a/current_controller/current_function
> now
> was /current_app/current_controller/a
> 
> I.e. the change of behavior only occurs if the user explicitly
> specifies r and a (without naming a)  but not f. I.e. if the user is
> specifying redundant information that may be conflicting (because a
> may differ from r.application). Users should not be doing this anyway.
> I have never seen anybody doing this.
> 
> Did I miss something? can you see any other case when the behavior
> would change?
> 
> What do other people think?
> 
> Massimo
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On Jul 29, 8:27 pm, Thadeus Burgess <[email protected]> wrote:
>> Massimo, you cannot
>> 
>> I am sorry but that would break backwards compatibility.
>> 
>> Say if in certain apps you have this (in alot of the earlier apps on
>> web2py.com do this too)
>> 
>> URL(request.application, 'static', 'logo.png')
>> 
>> Or
>> 
>> URL(request.application, 'default', 'index')
>> 
>> Unfortunately, we cannot re-arrange the variables defined in URL from this 
>> order
>> 
>> def URL(
>>     a=None,
>>     c=None,
>>     f=None,
>>     r=None,
>>     args=[],
>>     vars={},
>>     anchor='',
>>     extension=None,
>>     env=None
>>     ):
>> 
>> --
>> Thadeus
>> 
>> On Thu, Jul 29, 2010 at 8:23 PM, Michele Comitini
>> 
>> <[email protected]> wrote:
>>> thumbs up!
>> 
>>> 2010/7/30 mdipierro <[email protected]>
>> 
>>>> I took it one step further...
>> 
>>>>>>> URL()
>>>> /app/default/index
>>>>>>> URL('test')
>>>> /app/default/test
>>>>>>> def test(): return 'test'
>>>>>>> URL(test)
>>>> /app/default/test
>>>>>>> URL('static','filename')
>>>> /app/static/filename
>>>>>>> URL('other','static','filename')
>>>> /other/static/filename
>> 
>>>> No more r=, c=, f= needed but all optional.
>> 
>>>> On Jul 28, 6:28 pm, Thadeus Burgess <[email protected]> wrote:
>>>>> SORRY! =D
>> 
>>>>> --
>>>>> Thadeus
>> 
>>>>> On Wed, Jul 28, 2010 at 6:22 PM, mdipierro <[email protected]>
>>>>> wrote:
>>>>>> WOW. Uploading to trunk. Now I need to revise the book again. :-(
>> 
>>>>>> On Jul 28, 5:51 pm, Thadeus Burgess <[email protected]> wrote:
>>>>>>>>>> URL(r=request, c='hello', f='world', args=['hi'],
>>>>>>>>>> vars={'q':'greetings'}, anchor='the_world')
>> 
>>>>>>> '/welcome/hello/world/hi#the_world?q=greetings'>>> URL(c='hello',
>>>>>>> f='world', args=['hi'], vars={'q':'greetings'}, anchor='the_world')
>> 
>>>>>>> '/welcome/hello/world/hi#the_world?q=greetings'
>> 
>>>>>>> Attached is the diff
>> 
>>>>>>> This should not effect any current usages of URL, but from this point
>>>>>>> forward we shouldn't have to specify r=request!
>> 
>>>>>>> --
>>>>>>> Thadeus
>> 
>>>>>>> On Wed, Jul 28, 2010 at 5:21 PM, mdipierro <[email protected]>
>>>>>>> wrote:
>>>>>>>> ok
>> 
>>>>>>>> On Jul 28, 4:52 pm, Thadeus Burgess <[email protected]> wrote:
>>>>>>>>> For a little more advanced version of what Massimo just posted:
>> 
>>>>>>>>> This allows you to use both.
>> 
>>>>>>>>> URL(r=request, c=<controller>, f=.....)
>>>>>>>>> and
>>>>>>>>> URL(c=<controller>, f=<function>.....)
>> 
>>>>>>>>>>> http://packages.python.org/web2py_utils/init.html#gurlhttp://hg.thade......
>> 
>>>>>>>>> The reason we have to pass the request to URL each time is because
>>>>>>>>> it
>>>>>>>>> is just imported into the context. Since it is just a python
>>>>>>>>> function,
>>>>>>>>> it has no knowledge of request.
>> 
>>>>>>>>> Why can't we do something like gURL from within web2py? When
>>>>>>>>> building
>>>>>>>>> the context, why can't we make URL a loaded function that will get
>>>>>>>>> request passed to it, exactly how gURL works.
>> 
>>>>>>>>> Effectively, we won't have to pass request into URL function
>>>>>>>>> anymore... ever.
>> 
>>>>>>>>> If your interested, I can work on the patch.
>> 
>>>>>>>>> --
>>>>>>>>> Thadeus
>> 
>>>>>>>>> On Wed, Jul 28, 2010 at 3:56 PM, mdipierro
>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>> 1) It is a bit more complex because of static, appadmin, and
>>>>>>>>>> admin.
>>>>>>>>>> You can map
>> 
>>>>>>>>>> /function/var1/var2
>> 
>>>>>>>>>> into
>> 
>>>>>>>>>> /app/controller/function/var1/var2
>> 
>>>>>>>>>> using a file routes.py
>>>>>>>>>>  ------- begin file
>>>>>>>>>> routes_in=[
>>>>>>>>>>  ('/admin/$anything','/admin/$anything'),
>>>>>>>>>>  ('/static/$anything','/app/static/$anything'),
>>>>>>>>>>  ('/appadmin/$anything','/app/appadmin/$anything'),
>>>>>>>>>>  ('/$anything','/app/default/$anything'),
>>>>>>>>>> ]
>>>>>>>>>> routes_out=[(y,x) for (x,y) in routes_in]
>>>>>>>>>> ----- end file
>> 
>>>>>>>>>> 2) in db.py define
>> 
>>>>>>>>>> def url(f,args={},vars={}):
>>>>>>>>>>      return URL(r=request,f=f,args=args,vars=vars)
>>>>>>>>>> def go(f,args={},vars={},flash=''):
>>>>>>>>>>      session.flash=flash
>>>>>>>>>>      return go(url(f=f,args=args,vars=vars))
>> 
>>>>>>>>>> and use
>> 
>>>>>>>>>>    url('index')
>> 
>>>>>>>>>> or
>> 
>>>>>>>>>>   go('index',flash='you are being redirected')
>> 
>>>>>>>>>> I do it all the time
>> 
>>>>>>>>>> On Jul 28, 3:29 pm, VP <[email protected]> wrote:
>>>>>>>>>>> I'm a newbie, so my questions probably have easy answers, but
>>>>>>>>>>> anyway.
>>>>>>>>>>> Among a few things, there are two I don't understand and think
>>>>>>>>>>> can be
>>>>>>>>>>> simplified.
>> 
>>>>>>>>>>> 1. this url:   app/controller/function/var1/var2
>> 
>>>>>>>>>>> For me at least, most of the time I probably have only one
>>>>>>>>>>> controller.   If there is one controller, may be we should get
>>>>>>>>>>> rid of
>>>>>>>>>>> "controller" in the url?    This will be sufficient:
>>>>>>>>>>> app/f/a/b/c
>> 
>>>>>>>>>>> 2.  Similarly, most of the time I have only one app (current
>>>>>>>>>>> app).
>>>>>>>>>>> But I use URL() a lot and every time I have to pass in request
>>>>>>>>>>> like
>>>>>>>>>>> this URL(r=request, f='foo').
>> 
>>>>>>>>>>> Why do I have to pass in request if I have only one app, one
>>>>>>>>>>> controller?
>> 
>>>>>>>>>>> Furthermore, isn't request supposed to be global?  If so, do we
>>>>>>>>>>> have
>>>>>>>>>>> to pass it in?
>> 
>>>>>>>  url_proxy.diff
>>>>>>> 1KViewDownload

Reply via email to