folders.py
branchxbelweb
changeset 45 c81d480c3224
--- /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)