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
|
#!/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):
try:
t = self.get_tpl(tpl)
except mako.exceptions.TopLevelLookupException, e:
raise web.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()
|