Mercurial > hg > index.fcgi > www > www-1
comparison index_app.py @ 61:16bcb4ae6985
add laterlinks2/index.fcgi
author | paulo |
---|---|
date | Fri, 18 Jul 2014 23:03:53 -0700 |
parents | 637a4470363b |
children | 259a484f691b |
comparison
equal
deleted
inserted
replaced
1:4a60cd7041dc | 2:73411b5df952 |
---|---|
3 import datetime | 3 import datetime |
4 | 4 |
5 import html | 5 import html |
6 | 6 |
7 | 7 |
8 def _get_cwd(environ): | 8 def read_indexroot(indexroot_fn): |
9 ROOTPATH = "pauloang.com" | 9 ret = '' |
10 path_info = environ.get("PATH_INFO", '') | 10 with open(indexroot_fn) as f: |
11 return [ROOTPATH] + [i for i in path_info.split('/') if len(i) > 0] | 11 try: |
12 | 12 ret = f.next().strip() |
13 | 13 except StopIteration: |
14 def _get_breadcrumb(cwd): | 14 pass |
15 h = html.HTML() | 15 return ret |
16 for (i, d) in enumerate(cwd[:-1]): | |
17 h.a(d, href='/' + '/'.join(cwd[1:i+1])) | |
18 h.text('/') | |
19 h.text(cwd[-1]) | |
20 return h | |
21 | 16 |
22 | 17 |
23 def main(environ): | 18 def main(environ): |
24 cwd = _get_cwd(environ) | |
25 dirs = [] | 19 dirs = [] |
26 | 20 |
27 for i in os.listdir("."): | 21 for i in os.listdir("."): |
28 if i[0] != '.' and os.path.isdir(i): | 22 indexroot_fn = os.path.join(i, "_indexroot") |
23 if i[0] != '.' and os.path.isdir(i) and os.path.exists(indexroot_fn): | |
29 statobj = os.stat(i) | 24 statobj = os.stat(i) |
30 mtime = datetime.datetime.fromtimestamp(statobj.st_mtime) | 25 if not (statobj.st_mode & stat.S_IXOTH) and (statobj.st_mode & stat.S_IROTH): |
31 modeok = (statobj.st_mode & stat.S_IXOTH) and (statobj.st_mode & stat.S_IROTH) | 26 continue |
32 dirs.append((i, modeok, mtime)) | 27 indexroot_statobj = os.stat(indexroot_fn) |
28 mtime = datetime.datetime.fromtimestamp(indexroot_statobj.st_mtime) | |
29 indexroot = read_indexroot(indexroot_fn) | |
30 dirs.append((i, mtime, indexroot)) | |
33 | 31 |
34 root = html.HTML("html") | 32 root = html.HTML("html") |
35 TITLE_FMT = "-[%s]-" | 33 title = "-[pauloang.com]-" |
36 title = TITLE_FMT % '/'.join(cwd) | |
37 | 34 |
38 header = root.header | 35 header = root.header |
39 header.title(title) | 36 header.title(title) |
40 header.link(rel="stylesheet", type="text/css", href="index.css") | 37 header.link(rel="stylesheet", type="text/css", href="index.css") |
41 | 38 |
42 body = root.body | 39 body = root.body(klass="body") |
43 body.h1(TITLE_FMT % str(_get_breadcrumb(cwd)), escape=False) | 40 body.h1(title, escape=False) |
44 | 41 |
45 body_table = body.table(klass="index") | 42 for (i, mtime, indexroot) in sorted(dirs, key=lambda x: x[1], reverse=True): |
43 body.a(i, href=os.path.join(i, indexroot)) | |
44 body.br | |
46 | 45 |
47 for (i, modeok, mtime) in sorted(dirs, key=lambda x: x[2], reverse=True): | 46 body.div(klass="email").p.a("pbba13@gmail.com", href="mailto:pbba13@gmail.com") |
48 if modeok: | 47 |
49 r = body_table.tr | |
50 r.td.div(mtime.isoformat(), klass="index_date") | |
51 r.td.a(i, href=i) | |
52 | |
53 return unicode(root).encode("utf-8") | 48 return unicode(root).encode("utf-8") |
54 | 49 |
55 | 50 |
56 def app(environ, start_response): | 51 def app(environ, start_response): |
57 response_body = main(environ) | 52 response_body = main(environ) |