--- a/lib/my_db.py Fri Oct 17 15:05:17 2003 -0400
+++ b/lib/my_db.py Sat Oct 18 00:56:42 2003 -0400
@@ -44,6 +44,14 @@
VALUES ('bookmarks', %d, 0);
""" %(id,))
self.crs.execute("""
+ INSERT INTO folders(id, keyword, parent, userid)
+ VALUES (0, 0, -1, %d);
+ """ %(id,))
+ self.crs.execute("""
+ INSERT INTO db_sequence(seq_name, userid, nextid)
+ VALUES ('folders', %d, 1);
+ """ %(id,))
+ self.crs.execute("""
INSERT INTO preferences(userid)
VALUES (%d);
""" %(id,))
@@ -261,6 +269,68 @@
qry = qry + ';'
self.crs.execute(qry)
return self.crs.fetchall()
+ def get_folder_keyword(self, id):
+ self.crs.execute("""
+ SELECT k.id, k.name
+ FROM keywords k, folders f
+ WHERE
+ f.userid = %d AND f.id = %d
+ AND k.userid = f.userid
+ AND k.id = f.keyword;
+ """ %(self.userid, id))
+ return self.crs.fetchone()
+ def get_subfolders(self, id):
+ self.crs.execute("""
+ SELECT f.id, k.id, k.name
+ FROM folders f, keywords k
+ WHERE f.userid = %d
+ AND f.parent = %d
+ AND k.userid = f.userid
+ AND k.id = f.keyword
+ ORDER BY k.name;
+ """ %(self.userid, id))
+ res = self.crs.fetchall()
+ return map(lambda e: {
+ 'id' : e[0],
+ 'name' : e[2],
+ 'keyword' : e[1] },
+ res)
+ def get_folder_parents_and_self(self, id):
+ """Return self and parents in descending order."""
+ if id < 0:
+ return []
+ self.crs.execute("""
+ SELECT f.id, k.id, k.name, f.parent
+ FROM folders f, keywords k
+ WHERE
+ f.id = %d AND f.userid = %d
+ AND k.userid = f.userid
+ AND k.id = f.keyword;
+ """ %(id, self.userid))
+ cur = self.crs.fetchone()
+ res = [{ 'id': cur[0],
+ 'name' : cur[2],
+ 'keyword': cur[1] }]
+ return res + self.get_folder_parents_and_self(cur[3])
+ def add_folder(self, keyword, parent):
+ id = self.get_next_id('folders')
+ self.crs.execute("""
+ INSERT INTO folders(userid, id, keyword, parent)
+ VALUES (%d, %d, %d, %d);
+ """ % (self.userid, id, keyword, parent))
+ self.cnx.commit()
+ def remove_folders(self, id, commit = 1):
+ if id == 0:
+ raise "Can't erase base folder!"
+ subs = self.get_subfolders(self, id)
+ for sub in subs:
+ self.remove_folder(sub[0], 0)
+ self.crs.execute("""
+ DELETE FROM folders
+ WHERE id = %d AND userid = %d;
+ """ % (id, self.userid))
+ if commit:
+ self.cnx.commit()
def get_next_id(self, seq_name):
if seq_name == 'users':
userid = -1