diff -r e80160a19653 -r f74bad856bce lib/folders.py --- a/lib/folders.py Mon Oct 27 02:26:39 2003 -0500 +++ b/lib/folders.py Thu Oct 30 03:24:25 2003 -0500 @@ -1,7 +1,6 @@ -#!/usr/bin/python - from templates import Template from keywords import set_selection, sort_keywords +from __future__ import nested_scopes def do_folder_action(db, form, folder): if form['action'].value == 'add': @@ -53,22 +52,39 @@ folders_keywords = [] for parent in parents: folders_keywords.append(parent['keyword']) - parent['count'] = db.get_bookmarks_count(folders_keywords) + parent['count'] = db.get_bookmarks_count(folders_keywords)[0][1] + children_keywords = db.get_bookmarks_count(selection, [], exclusion) 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']]) + child['count'] = 0 + for kw in children_keywords: + if kw[0] == child['keyword']: + child['count'] = kw[1] + children_keywords.remove(kw) + break + del children_keywords bookmarks = map(lambda bk: bk[0], db.select_bookmarks(selection)) - allkw = db.get_keywords(bookmarks) - keywords = [] - 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 + allkw = filter(lambda kw: kw[0] not in folders_keywords, + db.get_keywords(bookmarks)) + keywords = map(lambda kw: { 'id': kw[0], 'keyword': kw[1] }, allkw) + allkw = map(lambda kw: kw[0], allkw) + count = db.get_bookmarks_count(selection, [], allkw) + removed = db.get_bookmarks_count(selection, exclusion, allkw) + for kw in keywords: + kw['count'] = 0 + kw['removed'] = 0 + for cnt in count: + if kw['id'] == cnt[0]: + kw['count'] = cnt[1] + count.remove(cnt) + break + for cnt in removed: + if kw['id'] == cnt[0]: + kw['removed'] = cnt[1] + removed.remove(cnt) + break + del allkw, count, removed bookmarks = db.select_bookmarks(selection, exclusion) if len(bookmarks) <> 0: bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks))