diff -r fe0d02f344cb -r e80160a19653 lib/my_db.py --- 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