# HG changeset patch
# User fabien
# Date 1066453002 14400
# Node ID c81d480c3224c65eac3392c8f4d58e1640ad1b5e
# Parent 87f94936990d92ea83ebca6ff7e2964529441198
[svn r1601] Add first try to get a folder's like view.
diff -r 87f94936990d -r c81d480c3224 ChangeLog
--- a/ChangeLog Fri Oct 17 15:05:17 2003 -0400
+++ b/ChangeLog Sat Oct 18 00:56:42 2003 -0400
@@ -1,6 +1,7 @@
xbelweb (0.1-5) unstable; urgency=low
* Add display name to Preferences.
+ * Add folders view with Add.
-- Fabien Ninoles
+
+
+
+
+
+
+
+
+
+
diff -r 87f94936990d -r c81d480c3224 lib/create_db.sql
--- a/lib/create_db.sql Fri Oct 17 15:05:17 2003 -0400
+++ b/lib/create_db.sql Sat Oct 18 00:56:42 2003 -0400
@@ -59,6 +59,20 @@
CREATE INDEX index_bkkw_user ON bookmarks_keywords (userid);
CREATE INDEX index_bkkw_bkuser ON bookmarks_keywords (bookmark, userid);
+--
+-- Folders structure
+--
+
+CREATE TABLE folders (
+ id int DEFAULT '0' NOT NULL,
+ userid int DEFAULT '0' NOT NULL,
+ keyword int DEFAULT '0' NOT NULL,
+ parent int DEFAULT '0' NOT NULL,
+ PRIMARY KEY (id, userid)
+);
+
+CREATE INDEX index_folders_parent ON folders (userid, parent);
+
--
-- Table structure for table 'db_sequence'
--
diff -r 87f94936990d -r c81d480c3224 lib/my_db.py
--- 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
diff -r 87f94936990d -r c81d480c3224 lib/webutils.py
--- a/lib/webutils.py Fri Oct 17 15:05:17 2003 -0400
+++ b/lib/webutils.py Sat Oct 18 00:56:42 2003 -0400
@@ -88,4 +88,3 @@
tproc.set("total", len(bk))
print tproc.process(tmpl)
-
diff -r 87f94936990d -r c81d480c3224 prefs.tmpl
--- a/prefs.tmpl Fri Oct 17 15:05:17 2003 -0400
+++ b/prefs.tmpl Sat Oct 18 00:56:42 2003 -0400
@@ -3,7 +3,7 @@
-