On Aug 7, 2010, at 9:03 AM, mdipierro wrote:

> Thanks to Jonathan Lundell we have an experimental version in trunk of
> app level routes.
> To understand how it works read routes.example.py and comments in the
> file gluon/rewrite.py
> 
> If you test it please report your findings here.

*Very* experimental, mostly not tested. 

I'll describe some of the changes here.

1. If you don't explicitly invoke any of the new features, routing should 
behave identically to before. If you see any different, please let us know asap.

2. You can now have a routes.py in the top level folder of an application, and 
it will be used *instead* of the base routes.py. However, it's not enough to 
simply have the file there; you must inform the routing logic about it.

3. The way you inform the routing logic is with a new element in the base 
routes.py: routes_app. routes_app is processed identically to routes_in, but 
the output must be an app name (or nothing). routes_app is processed at the 
beginning of a request. If it produces an app name, and that app has an 
app-specific routes.py (that is, applications/appname/routes.py), then that 
routes.py is used instead of the base routes.py.

4. In an unrelated change, there are three other new elements in routes.py:

default_application = "init"
default_controller = "default"
default_function = "index"

Note that default_application doesn't interact with app-specfic routing, since 
it's used after rewrite has taken place. default_controller and 
default_function should normally be used only in an app-specific routes.py, 
because, in the base routes.py, they will apply to all apps *without* an 
app-specific routes.py. That would probably lead to confusion when running 
admin or examples; at the very least their defaults would break.

5. As usual, I suggest that when you edit routes.example.py to generate a new 
routes.py, you also edit the doctest at the end, and use it to verify that 
you're getting what you expect. To run the doctest, just do "python routes.py".


Note also that I have a more far-reaching change in mind, but don't have it 
worked out yet. The new version will move away from regexes (though the old 
logic will remain in place for compatibility). It's supposed to be more 
flexible and much easier to use, and also handle URL encoding & decoding 
better. But this change should help in the meantime.

Reply via email to