Fork me on Bitbucket

PyRoutes.JS

PyRoutes.JS provide a Javascript routes generation function like Python Routes Mapper.generate method.

Introduction

  • Do you use Python Routes library in Pylons or other applications ?
  • Do you use something like ${h.url('entry_view', entry_id=2)} in your templates ?

So, now do you dream to have Javascript routes generation function ?

PyRoutes.JS is the tool that you need !

If you have this Routes Mapper configuration :

...
map = Mapper()
...
map.connect('entry_view', '/entries/{issue_id:\d*}/', controller='issues', action='view')
map.connect('entry_edit', '/entries/{issue_id:\d*}/edit', controller='issues', action='edit')
...

In your javascript files, you can use PyRoutes.JS like this :

pyroutes.generate('entry_view', entry_id=2); // return '/entries/1/'
pyroutes.generate('entry_edit', entry_id=5); // return '/entries/5/edit/'

Installation

$ pip install pyroutes.js

Pylons integration

In my_app/config/middleware.py file, append :

...
from pylons.middleware import ErrorHandler, StatusCodeRedirect
from pylons.wsgiapp import PylonsApp
from routes.middleware import RoutesMiddleware

...

from pyroutesjs import Middleware as PyRoutesJSMiddleware       # <= append this line

...

from my_app.config.environment import load_environment

...

def make_app(global_conf, full_stack=True, static_files=True, **app_conf):

    ...

    # Append PyRoutes.js middleware
    app = PyRoutesJSMiddleware(app, config['routes.map'])      # <= append this line

    app.config = config
    return app

In your template, append :

<script type="text/javascript" src="${h.url('/js/pyroutes.js')}"></script>

Limitations

  • Currently you can only generate named routes

Source code

Mercurial repository is here : https://bitbucket.org/harobed/pyroutes.js/src

You can clone the code :

$ hg clone http://bitbucket.org/harobed/pyroutes.js

Issue tracker

You can report your bugs here : https://bitbucket.org/harobed/pyroutes.js/issues

Fork me on Bitbucket