lib/my_db.py
branchxbelweb
changeset 53 e80160a19653
parent 52 fe0d02f344cb
child 54 f74bad856bce
--- a/lib/my_db.py	Sun Oct 26 22:56:49 2003 -0500
+++ b/lib/my_db.py	Mon Oct 27 02:26:39 2003 -0500
@@ -220,7 +220,8 @@
 		self.crs.execute("""
 			INSERT INTO bookmarks_keywords (userid,
 			bookmark, keyword)
-			SELECT (%d, %d, bookmark)
+			SELECT %d, bookmark, %d
+			FROM bookmarks_keywords
 			WHERE keyword = %d
 			AND userid = %d
 			AND bookmark NOT IN 
@@ -268,9 +269,9 @@
 		if not res:
 			res = [[0,0]]
 		return res
-	def select_bookmarks(self, has_kw = [0], except_kw = []):
+	def _bookmarks_selection(self, has_kw = [0], except_kw = []):
 	        """
-Return a list of id bookmarks who has /has_kw/ set but not /except_kw/.
+Return a bookmarks selection query used in at least two function.
 """
 		basic_qry = """
 		  SELECT bk.bookmark FROM bookmarks_keywords bk
@@ -280,12 +281,32 @@
 		
 		qry = basic_qry % (has_kw[0], self.userid)
 		for kw in has_kw[1:]:
-			qry = qry + ("INTERSECT " + basic_qry % (kw, self.userid))
+			qry += ("INTERSECT " + basic_qry % (kw, self.userid))
 		for kw in except_kw:
-			qry = qry + ("EXCEPT " + basic_qry % (kw, self.userid))
-		qry = qry + ';'
+			qry += ("EXCEPT " + basic_qry % (kw, self.userid))
+		return qry
+	def select_bookmarks(self, has_kw = [0], except_kw = []):
+	        """
+Return a list of id bookmarks who has /has_kw/ set but not /except_kw/.
+"""
+		qry = self._bookmarks_selection(has_kw, except_kw) + ';'
 		self.crs.execute(qry)
 		return self.crs.fetchall()
+	def get_bookmarks_count(self, has_kw = [0], except_kw = []):
+	        """
+Return a count of bookmarks which would have been return on
+select_bookmarks qry.
+"""
+		qry = """
+			SELECT COUNT(id) FROM bookmarks
+			WHERE userid = %d AND id IN """ % self.userid
+		qry += "(" + self._bookmarks_selection(has_kw, except_kw) + ");"
+		self.crs.execute(qry)
+		result = self.crs.fetchone()
+		if result:
+			return result[0]
+		else:
+			return 0
 	def get_folder_keyword(self, id):
 		self.crs.execute("""
 			SELECT k.id, k.name