[svn r1585] Restrict keywords count to selection. xbelweb
authorfabien
Fri, 10 Oct 2003 11:38:20 -0400
branchxbelweb
changeset 41 7b7cd0e74ee3
parent 40 b62ebedcb8ac
child 42 6d31ed0f6ad3
[svn r1585] Restrict keywords count to selection.
ChangeLog
TODO
index.py
lib/my_db.py
lib/webutils.py
--- a/ChangeLog	Wed Oct 08 17:51:09 2003 -0400
+++ b/ChangeLog	Fri Oct 10 11:38:20 2003 -0400
@@ -1,3 +1,9 @@
+xbelweb (0.1-4) unstable; urgency=low
+
+  * Restrict keywords count to selection.
+
+ -- Fabien Ninoles <fabien@tzone.org>  Fri, 10 Oct 2003 11:18:47 -0400
+
 xbelweb (0.1-2) unstable; urgency=low
 
   * Add user preferences (kw sorting and select box size).
--- a/TODO	Wed Oct 08 17:51:09 2003 -0400
+++ b/TODO	Fri Oct 10 11:38:20 2003 -0400
@@ -1,6 +1,5 @@
 * Used SQL sequence instead of the db_sequence table.
 * Add CSS.
-* Add limit query page
 * Add Search capabilities.
 * Add default (dynamic?) tree expansion.
 * Add XBel Export.
--- a/index.py	Wed Oct 08 17:51:09 2003 -0400
+++ b/index.py	Fri Oct 10 11:38:20 2003 -0400
@@ -33,4 +33,4 @@
     if len(bookmarks) > 0:
     	bookmarks = db.get_bookmarks(map(lambda x: x[0], bookmarks))
     bookmarks = map(lambda bk: bk.dict(), bookmarks)
-    process_index(bookmarks, keywords, db.get_preferences())
+    process_index(bookmarks, keywords[1:], db.get_preferences())
--- a/lib/my_db.py	Wed Oct 08 17:51:09 2003 -0400
+++ b/lib/my_db.py	Fri Oct 10 11:38:20 2003 -0400
@@ -175,7 +175,7 @@
 			AND (
 			""" % (self.userid, self.userid)
 		for id in bk_ids:
-			qry = qry + "bk.bookmark = %d OR " % (id,)
+			qry += "bk.bookmark = %d OR " % (id,)
 		qry = qry[:-3] + ") ORDER BY k.id;"
 		self.crs.execute(qry)
 		return self.crs.fetchall()
@@ -217,14 +217,19 @@
 			ORDER BY k.id;""" % (self.userid,))
 		res = self.crs.fetchall()
 		return res
-	def get_keywords_count(self):
+	def get_keywords_count(self, bks = []):
 		"""Return a list of doublets [id, count].
 Does with a count of zero are ignored."""
-		self.crs.execute("""SELECT bk.keyword, COUNT(bk.keyword)
+		qry = """SELECT bk.keyword, COUNT(bk.keyword)
 			FROM bookmarks_keywords bk
-			WHERE bk.userid = %d
-			GROUP BY bk.keyword
-			ORDER BY bk.keyword;""" % (self.userid,))
+			WHERE bk.userid = %d""" % (self.userid,)
+		if len(bks) > 0:
+			qry += " AND ( bk.bookmark = %d" % bks[0]
+			for bk in bks[1:]:
+				qry += " OR bk.bookmark = %d" % bk
+			qry += " )"
+		qry += " GROUP BY bk.keyword ORDER BY bk.keyword;"
+		self.crs.execute(qry)
 		res = self.crs.fetchall()
 		if not res:
 			res = [[0,0]]
--- a/lib/webutils.py	Wed Oct 08 17:51:09 2003 -0400
+++ b/lib/webutils.py	Fri Oct 10 11:38:20 2003 -0400
@@ -26,7 +26,7 @@
 		allkw = map(lambda x,y: [x, y], ids, names)
 	else:
 		allkw = db.get_all_keywords()
-	(kw, cnt) = map(list,apply(zip, db.get_keywords_count()))
+	(kw, cnt) = map(list,apply(zip, db.get_keywords_count(bk)))
 	res = []
 	for key in allkw:
 		is_selected = key[0] in sel
@@ -82,7 +82,7 @@
     tproc = get_template_processor(pref)
     bk.sort(lambda x,y: cmp(x['name'],y['name']))
     tproc.set("Bookmarks", bk)
-    kw = sort_keywords(kw[1:], pref)
+    kw = sort_keywords(kw, pref)
     tproc.set("Keywords", kw)
     tproc.set("curl", get_curl())
     tproc.set("total", len(bk))