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
>