diff -r fe0d02f344cb -r e80160a19653 lib/folders.py --- 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) +