1 #!/usr/bin/python |
|
2 |
|
3 import sys |
|
4 import traceback |
|
5 if (__name__ == '__main__'): |
|
6 sys.path.insert(0, "/home/fabien/lib/python") |
|
7 sys.path.insert(0, "./lib") |
|
8 sys.stderr = sys.stdout |
|
9 |
|
10 print "Content-type: text/html; charset=iso-8859-1;" |
|
11 print |
|
12 |
|
13 # import cgitb; cgitb.enable() |
|
14 import cgi |
|
15 import my_db |
|
16 from os import environ |
|
17 from htmltmpl import TemplateManager |
|
18 from webutils import get_template_processor, set_selection, sort_keywords |
|
19 |
|
20 def output(prefs, folder, parents, children, bookmarks, keywords): |
|
21 tmpl = TemplateManager().prepare("folders.tmpl") |
|
22 tproc = get_template_processor(prefs) |
|
23 tproc.set('Parents', parents) |
|
24 tproc.set('folder', folder['id']) |
|
25 tproc.set('name', folder['name']) |
|
26 tproc.set('total', len(bookmarks)) |
|
27 bookmarks.sort(lambda l,r: cmp(l['name'],r['name'])) |
|
28 tproc.set('Bookmarks', bookmarks) |
|
29 tproc.set('Subfolders', children) |
|
30 keywords = sort_keywords(keywords[1:], prefs) |
|
31 tproc.set('Keywords', keywords) |
|
32 print tproc.process(tmpl) |
|
33 |
|
34 if (__name__ == "__main__"): |
|
35 form = cgi.FieldStorage() |
|
36 db = my_db.connect(environ["REMOTE_USER"]) |
|
37 if form.has_key('folder'): |
|
38 folder = int(form['folder'].value) |
|
39 else: |
|
40 folder = 0 |
|
41 if form.has_key('action'): |
|
42 if form['action'].value == 'add': |
|
43 if form.has_key('sel'): |
|
44 keyword = int(form['sel'].value) |
|
45 db.add_folder(keyword, folder) |
|
46 print "<em>Folder successfully add.</em>" |
|
47 parents = db.get_folder_parents_and_self(folder) |
|
48 children = db.get_subfolders(folder) |
|
49 parents.reverse() |
|
50 selection = map(lambda e: e['keyword'], parents) |
|
51 exclusion = map(lambda e: e['keyword'], children) |
|
52 bookmarks = db.select_bookmarks(selection, exclusion) |
|
53 selected_keywords = set_selection(db, |
|
54 map(lambda e: e[0], bookmarks), |
|
55 selection, exclusion) |
|
56 keywords = [] |
|
57 for keyword in selected_keywords: |
|
58 if not keyword['id'] in exclusion: |
|
59 keywords.append(keyword) |
|
60 for child in children: |
|
61 child['count'] = len(db.select_bookmarks(selection + [child['keyword']])) |
|
62 bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks)) |
|
63 bookmarks = map(lambda bk: bk.dict(), bookmarks) |
|
64 output(db.get_preferences(), parents.pop(), parents, children, bookmarks, keywords) |
|