While this is intended to simplify the current specifications of
routes.py (I think), what I have seen is more confusing to me.  Does
this replace the old routes.py?

Maybe, can you provide examples of typical use cases?  For example,
one VPS account, each domain mapping to each app.  Anything else?

Thank you.



On Jan 6, 10:29 am, Jonathan Lundell <[email protected]> wrote:
> The new router logic in the trunk is looking fairly stable now, and needs 
> feedback.
>
> See the comments in router.example.py for summary documentation (reproduced 
> below), and ask here if you have questions.
>
> The simplest possible router is:
>
> routers = dict()
>
> This sets all the defaults (including default_application=init). The next 
> most simple router:
>
> routers = dict(
>     BASE = dict(default_application = 'myapp')
> )
>
> Either of those will perform component removal from outgoing URLs.
>
> If 'myapp' needs to override specific routing parameters, you'll do something 
> like this:
>
> routers = dict(
>     BASE = dict(default_application = 'myapp'),
>     myapp = dict(default_controller = 'defcon')
> )
>
> To use the new language facility (URLs like /a/pt-br/c/f/...), you'll need to 
> do something like this early in your model:
>
> if request.uri_language: T.force(request.uri_language)
>
> This is not tested, and it'd be great if someone could give it a shot. Notice 
> that with language translation, static files are served preferentially from 
> language-specific subdirectories.
>
> applications/appname/static/pt-br/...
>
> If the incoming URL for a static file is tagged pt-br, we look first in 
> static/pt-br/ and then in static/, so it's not necessary to duplicate files 
> that don't need translation.
>
> If you're already using routes.py, just add a routers=dict(... entry, and it 
> will be used preferentially; you shouldn't have to remove your regex-based 
> rewrites.
>
> Feedback, please.
>
> #  routers are dictionaries of URL routing parameters.
> #
> #  For each request, the effective router is:
> #    the built-in default base router (shown below),
> #    updated by the BASE router in routes.py routers,
> #    updated by the app-specific router in routes.py routers,
> #    updated by the app-specific router from applcations/app/routes.py 
> routers (if any)
> #
> #
> #  Router members:
> #
> #  default_application: default application name
> #  applications: list of all recognized applications, or 'ALL' to use all 
> currently installed applications
> #      Names in applications are always treated as an application names when 
> they appear first in an incoming URL.
> #      Set applications to [] to disable the removal of application names 
> from outgoing URLs.
> #  domains: dict used to map domain names to application names
> #  default_controller: name of default controller
> #  default_function: name of default function (all controllers)
> #  root_static: list of static files accessed from root
> #       (mapped to the selected application's static/ directory)
> #  domain: the domain that maps to this application (alternative to using 
> domains in the base router)
> #  languages: list of all supported languages
> #      Names in controllers are always treated as language names when they 
> appear in an incoming URL after
> #      the (optional) application name.
> #  controllers: list of valid controllers in selected app
> #       or "DEFAULT" to use all controllers in the selected app plus 'static'
> #       or [] to disable controller-name removal.
> #      Names in controllers are always treated as controller names when they 
> appear in an incoming URL after
> #      the (optional) application and language names.
> #  default_language
> #       The language code (for example: en, it-it) optionally appears in the 
> URL following
> #       the application (which may be omitted). For incoming URLs, the code 
> is copied to
> #       request.language; for outgoing URLs it is taken from request.language.
> #       If languages=[], language support is disabled.
> #       The default_language, if any, is omitted from the URL.
> #  check_args: set to False to suppress arg checking
> #       request.raw_args always contains a list of raw args from the URL, not 
> unquoted
> #       request.args are the same values, unquoted
> #       By default (check_args=True), args are required to match args_match.
> #  acfe_match: regex for valid application, controller, function, extension 
> /a/c/f.e
> #  file_match: regex for valid file (used for static file names)
> #  args_match: regex for valid args (see also check_args flag)
> #
> #
> #  The built-in default router supplies default values (undefined members are 
> None):
> #
> #     default_router = dict(
> #         default_application = 'init',
> #             applications = 'ALL',
> #         default_controller = 'default',
> #             controllers = 'DEFAULT',
> #         default_function = 'index',
> #         default_language = None,
> #             languages = [],
> #         root_static = ['favicon.ico', 'robots.txt'],
> #         domains = dict(),
> #         check_args = True,
> #         map_hyphen = True,
> #         acfe_match = r'\w+$',              # legal app/ctlr/fcn/ext
> #         file_match = r'(\w+[-=./]?)+$',    # legal file (path) name
> #         args_match = r'([\w@ -]+[=.]?)+$', # legal arg in args
> #     )
> #
> #  See rewrite.map_url_in() and rewrite.map_url_out() for implementation 
> details.

Reply via email to