import py from templess import templess class SideBar(object): def render(self, request, siteroot, template, reserved): serverroot = request.document_root() tpath = py.path.local(template) template = templess.template(tpath.open()) env = { 'homeurl': '%s/' % siteroot, 'items': self.get_items(serverroot, siteroot, reserved), } return list(list(template.render(env).find('body'))[0]) def get_items(self, serverroot, siteroot, reserved): paths = (py.path.local(serverroot) / siteroot).listdir() ret = [] for p in paths: name = p.purebasename.replace('_', ' ') if p.basename.startswith('.') or p.basename in reserved: continue url = self.mkurl(serverroot, p) ret.append({ 'url': url, 'name': name, }) ret.sort(lambda a, b: cmp(a['name'], b['name'])) return ret def mkurl(self, serverroot, p): path = str(p)[len(serverroot):].replace(py.std.os.path.sep, '/') if not path.startswith('/'): path = '/%s' % path return path # only have to have one instance sidebar = SideBar()