lib/folders.py
branchxbelweb
changeset 47 2781ac85b807
child 49 57932e991854
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/folders.py	Fri Oct 24 17:04:29 2003 -0400
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+
+from templates import Template
+from keywords import set_selection, sort_keywords
+
+def do_folder_action(db, form, folder):
+   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>"
+		return keyword
+   elif form['action'].value == 'delete':
+   	if form.has_key('delete'):
+		keyword = int(form['delete'].value)
+		db.remove_folders(keyword)
+		print "<em>Folder successfully remove.</em>"
+		return keyword
+   return -1
+
+def output(prefs, folder, parents, children, bookmarks, keywords):
+    tmpl = Template("folders.tmpl", prefs)
+    tmpl.set('Parents', parents)
+    tmpl.set('folder', folder['id'])
+    tmpl.set('name', folder['name'])
+    tmpl.set('total', len(bookmarks))
+    bookmarks.sort(lambda l,r: cmp(l['name'],r['name']))
+    tmpl.set('Bookmarks', bookmarks)
+    tmpl.set('Subfolders', children)
+    keywords = sort_keywords(keywords[1:], prefs)
+    tmpl.set('Keywords', keywords)
+    print tmpl.process()
+
+def do_folders(db, prefs, form = None):
+    folder = 0
+    if form:
+    	if form.has_key('folder'):
+    		folder = int(form['folder'].value)
+   	if form.has_key('action'):
+		do_folder_action(db, form, folder)
+    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(prefs, parents.pop(), parents, children, bookmarks, keywords)