--- a/lib/folders.py Sun Oct 26 22:56:49 2003 -0500
+++ b/lib/folders.py Mon Oct 27 02:26:39 2003 -0500
@@ -18,16 +18,23 @@
return keyword
return -1
+def sort_kw_with_removed(l, r):
+ result = l['removed'] - r['removed']
+ if result == 0:
+ result = l['count'] - r['count']
+ return -int(result)
+
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))
+ tmpl.set('total', folder['count'])
+ tmpl.set('subtotal', 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)
+ keywords.sort(sort_kw_with_removed)
tmpl.set('Keywords', keywords)
print tmpl.process()
@@ -39,29 +46,32 @@
if form.has_key('action'):
do_folder_action(db, form, folder)
parents = db.get_folder_parents_and_self(folder)
+ parents.reverse()
children = db.get_subfolders(folder)
selection = map(lambda e: e['keyword'], parents)
exclusion = map(lambda e: e['keyword'], children)
- parents.reverse()
- folder = parents.pop()
- bookmarks = db.select_bookmarks(selection)
- selected_keywords = set_selection(db,
- map(lambda e: e[0], bookmarks),
- selection)
+ folders_keywords = []
+ for parent in parents:
+ folders_keywords.append(parent['keyword'])
+ parent['count'] = db.get_bookmarks_count(folders_keywords)
+ for child in children:
+ folders_keywords.append(child['keyword'])
+ # This is really selection, not folders_keywords
+ child['count'] = db.get_bookmarks_count(selection + [child['keyword']])
+ bookmarks = map(lambda bk: bk[0], db.select_bookmarks(selection))
+ allkw = db.get_keywords(bookmarks)
keywords = []
- subfolders = []
- folders_keywords = selection +exclusion
- for keyword in selected_keywords:
- if keyword['id'] not in folders_keywords:
- keywords.append(keyword)
- for child in children:
- if child['keyword'] == keyword['id']:
- child['count'] = keyword['count']
- subfolders.append(child)
- children.remove(child)
- break
+ for keyword in allkw:
+ if keyword[0] not in folders_keywords:
+ kw = { 'id': keyword[0], 'keyword': keyword[1] }
+ kwsel = selection + [kw['id']]
+ kw['count'] = db.get_bookmarks_count(kwsel)
+ kw['removed'] = db.get_bookmarks_count(kwsel, exclusion)
+ keywords.append(kw)
+ del allkw, folders_keywords
bookmarks = db.select_bookmarks(selection, exclusion)
if len(bookmarks) <> 0:
bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks))
bookmarks = map(lambda bk: bk.dict(), bookmarks)
- output(prefs, folder, parents, subfolders, bookmarks, keywords)
+ output(prefs, parents.pop(), parents, children, bookmarks, keywords)
+