chiark / gitweb /
refactor to put findparents/spouses/children in one place
[familyTree.git] / cgiFiles / jointAncestorGraph.py
index 099f042719164ac1bfd4ef6eb05df5a97b643682..0279bc9cb999ba779f88a876b6943868d1c81536 100755 (executable)
@@ -6,36 +6,29 @@ cgitb.enable()
 import sys
 sys.path.append('/home/naath/familyTreeProject/familyTree')
 import make_dot as d
-import askQuestion
+import askQuestion as aQ
 
-def parents(ID,name,startLevel,stopLevel):
-
-       findParents = "SELECT Name,parentID FROM parents LEFT JOIN"\
-                        +" people ON people.id=parents.parentid"\
-                        +"  WHERE parents.id=?;"
+def add_parents(ID,name,startLevel,stopLevel):
 
        startLevel = startLevel + 1
        if int(startLevel) == int(stopLevel)+1:
                return
 
        pair=[]
-       for row in askQuestion.run_query(findParents,(ID,)):
-               if row[0]!=None:
-                       thisN = row[0] + ' '+str(row[1])
-                       
-                       pair.append(thisN)
-                       newName = thisN
-                       newID = row[1]
-                       if not d.has_node(thisN):
-                               d.add_person(thisN)
-                               parents(newID,newName,startLevel,stopLevel)
-
-               else:
-                       thisN = row[1] + ',p ' + str(ID)
-                       pair.append(thisN)
-                       d.add_person(thisN)
-
-       
+       [parents, parentIDs,parentNames] = aQ.find_parents(ID)
+
+        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,\
+                               startLevel,stopLevel)
+                else:   
+                        d.add_person(newName)
+                pair.append(newName)
 
        d.add_marriage(pair[0], pair[1],[name],1)
 
@@ -45,26 +38,26 @@ def make_graph(ID,ID2,LA,LB):
 
        if int(LA)!=0:
                s = "SELECT name, id FROM people WHERE ID = ?;"
-               for row in askQuestion.run_query(s,(ID,)):
+               for row in aQ.run_query(s,(ID,)):
                        thisN = row[0]+' ' + str(row[1])
                        d.add_highlight(thisN)
                        newName = (thisN)
                        newID = row[1]
-               parents(newID,newName,0,LA)
+               add_parents(newID,newName,0,LA)
 
        if int(LB)!=0:
                s = "SELECT name, id FROM people WHERE ID = ?;"
-               for row in askQuestion.run_query(s,(ID2,)):
+               for row in aQ.run_query(s,(ID2,)):
                        thisN = row[0] +' '+ str(row[1])
                        d.add_highlight(thisN)
                        newName = (thisN)
                        newID = row[1]
-               parents(newID,newName,0,LB)
+               add_parents(newID,newName,0,LB)
 
        d.add_subgraphs()
        d.end_dot()
        d.render_dot()
-       askQuestion.close(conn)
+       aQ.close(conn)
 
 form = cgi.FieldStorage()
 
@@ -73,7 +66,7 @@ ID2 = form.getvalue('id2')
 LA = form.getvalue('LA')
 LB = form.getvalue('LB')
 
-conn = askQuestion.connect()
+conn = aQ.connect()
 make_graph(ID,ID2,LA,LB)
-askQuestion.close(conn)
+aQ.close(conn)