[Grok-dev] Traverser, Request and URL mess
janwijbrand at gmail.com
Wed Oct 14 06:26:28 EDT 2009
Martijn Faassen wrote:
> If the problem indeed is about the ability to generate URLs to other
> skins, this is a long-standing discussion with no conclusion. The story
> appears to me that:
> * we keep running into it
> * it appears hard to devise a general solution
> Since we keep runnign into it, perhaps we can come up with a more
> limited solution, where it's at least possible to create URLs *without*
> any ++skin++ bit in it, or to at least add ++skin++foo easily to an
> existing URL (somewhere in the beginning). That won't cover all cases
> (virtual hosts, namespaces not appearing at the root of the URL, other
> things?) but it would cover a lot of them. We also need to make sure we
> can handle your case, where instead of ++skin++foo, you just want ++foo++.
Right, this is something I run into as well every now and then.
> Perhaps we need an API like this:
> self.url(..., namespace=('skin', 'foo')
> to go to ++skin++foo
> self.url(..., namespace=('grokui',None)
> to go to ++grokui++
> self.url(..., namespace=(None, None))
> to have no special namespace.
> the default would have namespace be None and it'd always generate URLs
> within the same namespace then. This is what it does already.
> I think it would probably simplest to make this work by simple but
> well-tested string rewriting.
The problem is tough: there's really not an easy __generic__ solution
for this problem for the reasons you describe. As such, I think I like
your idea: to at least formalize the string rewriting.
Maybe the skin name in ``namespace=('skin', 'MySkinName')`` could even
be, optionally, derived from the skin component itself!
+1 for such an addition to the ``self.url()`` method.
More information about the Grok-dev