--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/folders.py Sat Oct 18 00:56:42 2003 -0400
@@ -0,0 +1,64 @@
+#!/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)