summaryrefslogtreecommitdiff
path: root/index.py
blob: f36fd92b00753b172fd6022895b88ba30e47d39a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/python

from __future__ import with_statement

import os
import web
import mako
from mako.lookup import TemplateLookup

from functools import partial

import helper

APPDIR = os.path.dirname(os.path.abspath(__file__))

def appdir (*args):
    return os.path.join(APPDIR, *args)

class Renderer:
    def __init__ (self):
        self.lookup = TemplateLookup(directories=[appdir('templates')],
        module_directory = "/tmp/portato/",
        input_encoding='utf-8',
        output_encoding='utf-8')

    def render (self, tpl):
        print tpl
        try:
            t = self.get_tpl(tpl)
        except mako.exceptions.TopLevelLookupException, e:
            raise web.webapi.notfound(e)
        
        return partial(t.render, w = web, h = helper)

    __call__ = render

    def get_tpl (self, tpl):
        return self.lookup.get_template(self.get_tpl_name(tpl))
    
    def get_tpl_name (self, tpl):
        if not tpl.endswith(".mako"):
            tpl = tpl+".mako"

        return os.path.join("pages", tpl)

urls = ("/(.*)", "Handler")
app = web.application(urls, globals())

render = Renderer()

class Handler:
    def GET(self, name = '/'):
        print "Test"
        if not name or name == '/': name = 'index'
        return render(name)(menulist = self.generate_menu_list())

    def generate_menu_list (self):
        menulist = []
        with open(appdir("templates", "menu.lst")) as menu:
            for entry in menu:
                entry = entry.strip()
                menulist.append((entry, render.get_tpl(entry).uri))

        return menulist

if __name__ == "__main__":
    app.run()