diff -r d3c1de4d929e -r 2781ac85b807 lib/folders.py --- /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 "Folder successfully add." + return keyword + elif form['action'].value == 'delete': + if form.has_key('delete'): + keyword = int(form['delete'].value) + db.remove_folders(keyword) + print "Folder successfully remove." + 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)