--- 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))