123
authortanya <tanya@tanin.oblgaz>
Thu, 4 Feb 2010 14:55:19 +0000 (16:55 +0200)
committertanya <tanya@tanin.oblgaz>
Thu, 4 Feb 2010 14:55:19 +0000 (16:55 +0200)
database/db.py
list.py

index 6b66b39..1455111 100755 (executable)
@@ -42,14 +42,15 @@ class DbSqlite:
             self.data[row[0]] = row[1]
         return self.data
 
-    def get_allrecords(self, field):
+    def get_allrecords(self, field, struct):
         
         """return records"""
         cur = self.conn.cursor()
         cur.execute("select data.id, data.value "
                     "from data left join field "
                     "on data.id_field=field.id "
-                    "where field.name=?", (field,))
+                    "left join relation on data.id=relation.id_data "
+                    "where field.name=? and relation.id_struct=?", (field, struct))
         self.data = {}
         for row in cur:
             #print row
@@ -156,4 +157,17 @@ class DbSqlite:
                 ts.append(item[row[2]], [row[0], row[1]])
         return ts
 
+    def get_list(self, parent):
+        
+        """return list of struct with same parent"""
+        conn = self.connect()
+        if conn is None:
+            return None
+        cur = conn.cursor()
+        cur.execute("select id, name from struct where parent=?", (parent,))
+        data = {}
+        for row in cur:
+            data[row[0]] = row[1]
+        
+        return data    
 
diff --git a/list.py b/list.py
index cbbd987..ce065d6 100755 (executable)
--- a/list.py
+++ b/list.py
@@ -50,30 +50,36 @@ class List:
         vbox.pack_start(sw, True, True, 0)
         
         self.dbo = db.DbSqlite()
-        self.data = self.dbo.get_allrecords('cn')
+        #data = self.dbo.get_allrecords('cn')
+        data = self.dbo.get_list(0)
 
         store = gtk.ListStore(int, str)
-        for d in self.data:
-            store.append([d, self.data[d]])
+        for d in data:
+            store.append([d, data[d]])
         
-        ts = db.make_tree()
-        tree = gtk.TreeView(ts)
-        tree.set_rules_hint(True)
+        self.tree = gtk.TreeView(store)
+        self.tree.set_rules_hint(True)
 
-        tree.connect("row-activated", self.select_item)
+        self.tree.connect("row-activated", self.select_item)
 
         t1 = gtk.CellRendererText()
         column = gtk.TreeViewColumn("Id", t1, text=0)
         column.set_sort_column_id(0)
         column.set_visible(False)
-        tree.append_column(column)
+        self.tree.append_column(column)
 
         t1 = gtk.CellRendererText()
         column = gtk.TreeViewColumn("Name", t1, text=1)
         column.set_sort_column_id(0)
-        tree.append_column(column)
+        self.tree.append_column(column)
 
-        sw.add(tree)
+        sw.add(self.tree)
+
+        #st = gtk.ListStore(int, str)
+        #data = self.dbo.get_list(0)
+        #for d in self.data:
+        #    st.append([d, self.data[d]])
+        #self.tree.set_model(st) 
 
         self.window.add(vbox)
         self.window.show_all()
@@ -84,6 +90,21 @@ class List:
 
     def select_item(self, widget, path, column):
         
+        store = gtk.ListStore(int, str)
+        parent = widget.get_model()[path][0]
+        data = self.dbo.get_list(parent)
+        for d in data:
+            store.append([d, data[d]])
+        #add people
+        data = self.dbo.get_allrecords('cn', parent)
+        for d in data:
+            store.append([d, data[d]])
+        self.tree.set_model(store)    
+        print "set model"
+
+
+    def select_item1(self, widget, path, column):
+        
         #print "select_item path:%s" % path
         self.dialog = gtk.Dialog("Item descrition", 
                                 self.window,