lib/folders.py
branchxbelweb
changeset 54 f74bad856bce
parent 53 e80160a19653
child 58 004a32370ba5
--- 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))