chiark / gitweb /
refactor to put findparents/spouses/children in one place
[familyTree.git] / cgiFiles / ancestorGraph.py
index 36a9bf33dbca31f890064aaf6be6eb3a736f55db..4adb104c8d0a2bab0da656e7e7a3ea5e6fbe84b7 100755 (executable)
@@ -5,52 +5,47 @@ import cgitb
 cgitb.enable()
 import sys
 sys.path.append('/home/naath/familyTreeProject/familyTree')
-import askQuestion
+import askQuestion as aQ
 import make_dot as d
 
 
-def parents(ID,name):
-       findParents = "SELECT Name,parentID FROM parents LEFT JOIN"\
-                        +" people ON people.id=parents.parentid"\
-                        +"  WHERE parents.id=?;"
+def add_parents(ID,name):
 
-       pair =[]
-        for row in askQuestion.run_query(findParents,(ID,)):
-                if row[0]!=None:
-                        thisN = row[0] + ' '+str(row[1])
-                        newName = thisN
-                        newID = row[1]
-                       if not d.has_node(thisN):
-                               d.add_person(thisN)
-                               parents(newID,newName)
-                       pair.append(thisN)
+       [parents, parentIDs,parentNames] = aQ.find_parents(ID)
 
-                else:
-                        thisN = row[1] + ',p ' + str(ID)
-                       pair.append(thisN)
-                        d.add_person(thisN)
+       pair = []
+       for i in range(len(parents)):
+               newName = parents[i]
+               if parentIDs[i]!=0:
+                       newID = parentIDs[i]
+                       if not d.has_node(newName):
+                               d.add_person(newName)
+                               add_parents(newID,newName)
+               else:
+                       d.add_person(newName)
+               pair.append(newName)
 
        d.add_marriage(pair[0],pair[1],[name],1)
 
-def make_graph(ID,conn):
+def make_graph(ID):
        global allAncestors
 
        d.start_dot()
                
        [out, allAncestors,trackLevel,aDict] = \
-               askQuestion.all_ancestors(ID,'\n')
+               aQ.all_ancestors(ID,'\n')
 
 
        Self = allAncestors[0]
 
        s = "SELECT name||', '|| id FROM people WHERE ID=?"
         t = (Self,)
-        for row in askQuestion.run_query(s,t):
+        for row in aQ.run_query(s,t):
                 Self = row[0]
 
         d.add_highlight(Self)
 
-       parents(allAncestors[0],Self)
+       add_parents(allAncestors[0],Self)
 
        d.add_subgraphs()
 
@@ -58,13 +53,11 @@ def make_graph(ID,conn):
 
         d.render_dot()
 
-       askQuestion.close(conn)
-
 form = cgi.FieldStorage()
 
 ID = form.getvalue('id')
 
-conn = askQuestion.connect()
-make_graph(ID,conn)
-askQuestion.close(conn)
+conn = aQ.connect()
+make_graph(ID)
+aQ.close(conn)