7 sys.path.append('/home/naath/familyTreeProject/familyTree')
9 from pygraph.classes.graph import graph
10 from pygraph.classes.digraph import digraph
11 from pygraph.algorithms.searching import breadth_first_search
12 from pygraph.readwrite.dot import write
17 def parents(ID,name,gr,attr,startLevel,stopLevel):
19 findParents = "SELECT Name,parentID FROM parents LEFT JOIN"\
20 +" people ON people.id=parents.parentid"\
21 +" WHERE parents.id=?;"
23 startLevel = startLevel + 1
24 if int(startLevel) == int(stopLevel)+1:
27 for row in askQuestion.run_query(findParents,(ID,)):
29 thisN = row[0] + ' '+str(row[1])
30 if not gr.has_node(thisN):
31 gr.add_node(thisN,attr)
32 if gr.has_edge((thisN,name)):
34 gr.add_edge((thisN,name))
37 gr = parents(newID,newName,gr,attr,startLevel,stopLevel)
40 if not gr.has_node(row[1]):
41 gr.add_node(row[1],attr)
42 gr.add_edge((row[1],name))
45 def make_graph(ID,ID2,LA,LB):
49 attr = [('fontsize',8)]
53 s = "SELECT name, id FROM people WHERE ID = ?;"
54 for row in askQuestion.run_query(s,(ID,)):
55 thisN = row[0]+' ' + str(row[1])
56 gr.add_node(thisN,attr)
59 gr = parents(newID,newName,gr,attr,0,LA)
62 s = "SELECT name, id FROM people WHERE ID = ?;"
63 for row in askQuestion.run_query(s,(ID2,)):
64 thisN = row[0] +' '+ str(row[1])
65 gr.add_node(thisN,attr)
69 gr = parents(newID,newName,gr,attr,0,LB)
73 gvv = gv.readstring(dot)
77 print "Content-type: image/" + format + "\n"
78 print gv.render(gvv,format)
79 askQuestion.close(conn)
81 form = cgi.FieldStorage()
83 ID = form.getvalue('id')
84 ID2 = form.getvalue('id2')
85 LA = form.getvalue('LA')
86 LB = form.getvalue('LB')
88 conn = askQuestion.connect()
89 make_graph(ID,ID2,LA,LB)
90 askQuestion.close(conn)