if i can override request.extension and have it propagate, that's totally fine. if, for example, i could do this:
def formControllerFromComponent: # *** new line *** request.extension = 'html' doSomething() doSomethingElse() redirect(URL(..., extension='')) and have that stick as i bounce from function to function, that's absolutely what i need. i don't need it to be handled by a central handler so long as i know what the process is. it's simply a matter of knowing how to affect the necessary change. i already changed my code to work on a redirect so i'd get around the extension piece, but if this will work in concept, i'll go back to using it in the future. thanks, matt On Dec 30, 9:30 am, Jonathan Lundell <jlund...@pobox.com> wrote: > On Dec 29, 2010, at 3:25 PM, mattynoce wrote: > > > > > > > hi all. i have a component i'm plugging into the middle of a page, but > > i want that component to act seamlessly with the rest of the page. i > > do NOT want the component to do what components usually do and act > > independently. i need to include variable files, and components are > > the only way i can find to do that. > > > so when i submit forms from the component, they automatically > > append .load to redirects. i do not want this. so i found i can do: > > redirect(URL(..., extension='')) > > > however, when i execute other commands like this: > > def formControllerFromComponent: > > doSomething() > > doSomethingElse() > > redirect(URL(..., extension='')) > > > doSomething() will create any links it makes with a .load extension. i > > don't want to have to go around and append extension='' to every URL > > command in my controller. is there a way we can stop propagation of > > the .load suffix? based on a variable in the load initialization? > > something like: > > {{=LOAD(c='default', f='func', args=[arg1, arg2], ajax=False, > > ajax_trap=False, loadPropagate=False)}} > > This is a slightly tricky "feature". The propagation of the .load extension > (or any extension) depends on how URL() is called. I think it's a problem in > the way _gURL was implemented, and it makes URL even more hard to understand > than it already was. > > The issue is that URL defaults to request.extension (among other things) if > request is passed to URL. And request is implicitly passed to URL if you call > URL(func) or URL(ctlr, func) -- but *not* if you call URL(app, ctlr, func). > And of course you can override extension with extension=something (as long as > 'something' isn't None). > > We don't ordinarily care about this propagation, because 'html', the default, > is almost always what we want. > > URL is already so tricky in the way it works that I'd be really wary of > changing it; it'd almost certainly break something for someone. I haven't > used LOAD, and I'm a little hazy on how it works, but perhaps we could change > some central load handler to set request.extension=None, or something like > that. I think that'd be reasonable, since a new load request would set the > extension explicitly.