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