45
|
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)
|