[svn r1601] Add first try to get a folder's like view.
#!/usr/bin/python
import sys
import traceback
if (__name__ == '__main__'):
sys.path.insert(0, "/home/fabien/lib/python")
sys.path.insert(0, "./lib")
sys.stderr = sys.stdout
print "Content-type: text/html; charset=iso-8859-1;"
print
# import cgitb; cgitb.enable()
import cgi
import my_db
from os import environ
from htmltmpl import TemplateManager
from webutils import get_template_processor, set_selection, sort_keywords
def output(prefs, folder, parents, children, bookmarks, keywords):
tmpl = TemplateManager().prepare("folders.tmpl")
tproc = get_template_processor(prefs)
tproc.set('Parents', parents)
tproc.set('folder', folder['id'])
tproc.set('name', folder['name'])
tproc.set('total', len(bookmarks))
bookmarks.sort(lambda l,r: cmp(l['name'],r['name']))
tproc.set('Bookmarks', bookmarks)
tproc.set('Subfolders', children)
keywords = sort_keywords(keywords[1:], prefs)
tproc.set('Keywords', keywords)
print tproc.process(tmpl)
if (__name__ == "__main__"):
form = cgi.FieldStorage()
db = my_db.connect(environ["REMOTE_USER"])
if form.has_key('folder'):
folder = int(form['folder'].value)
else:
folder = 0
if form.has_key('action'):
if form['action'].value == 'add':
if form.has_key('sel'):
keyword = int(form['sel'].value)
db.add_folder(keyword, folder)
print "<em>Folder successfully add.</em>"
parents = db.get_folder_parents_and_self(folder)
children = db.get_subfolders(folder)
parents.reverse()
selection = map(lambda e: e['keyword'], parents)
exclusion = map(lambda e: e['keyword'], children)
bookmarks = db.select_bookmarks(selection, exclusion)
selected_keywords = set_selection(db,
map(lambda e: e[0], bookmarks),
selection, exclusion)
keywords = []
for keyword in selected_keywords:
if not keyword['id'] in exclusion:
keywords.append(keyword)
for child in children:
child['count'] = len(db.select_bookmarks(selection + [child['keyword']]))
bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks))
bookmarks = map(lambda bk: bk.dict(), bookmarks)
output(db.get_preferences(), parents.pop(), parents, children, bookmarks, keywords)