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)
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()
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)