Tornado-Menumaker

simple tornado menus


License
GPL-3.0
Install
pip install Tornado-Menumaker==0.1.2

Documentation

tornado-menumaker

Inspired by tornroutes a simple menu api

Copyright license

tornado-menumaker is licensed under the GNU Affero General Public License, for more information see the LICENSE.txt.

Usage

Define Handler using decorator:

import tornado.web
from tornado_menumaker import page, index, subpage, routes

@page('/news', 'News', icon='icon-news')
class NewsHandler(tornado.web.RequestHandler):

    @index
    def get(self):
        pass

    @subpage('/show/(\d+)')
    def show(self, id):
        pass

    @subpage('/new', 'Neue News')
    def new(self):
        pass

    @new.post
    def new(self):
        pass

    @subpage('/archive', 'Archiv')
    def archive(self):
        pass

a = tornado.web.Application(routes())

To get the menu structure you can then use:

from tornado_menumaker import items

for level, url, caption, sub_routes, kwargs in items():
   ...
   for level, url, caption, subsub_routes, kwargs in sub_routes:
      ...

This will yield for the above example:
   0, '/news', 'News', <generator>, {icon: 'icon_news'}
     1, '/news/new', 'Neue News', <generator>, {}
     1, '/news/archive', 'Archiv', <generator>, {}