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
21 def parents(ID,name,gr,attr,couples):
23 findParents = "SELECT Name,parentID FROM parents LEFT JOIN"\
24 +" people ON people.id=parents.parentid"\
25 +" WHERE parents.id=?;"
28 for row in askQuestion.run_query(findParents,(ID,)):
30 thisN = row[0] + ' '+str(row[1])
32 if not gr.has_node(thisN):
33 gr.add_node(thisN,attr)
34 if not gr.has_edge((thisN,name)):
35 gr.add_edge((thisN,name))
39 parents(newID,newName,gr,attr,couples)
42 thisN = row[1] + ' p' + str(ID)
43 if not gr.has_node(thisN):
45 gr.add_node(thisN,attr)
46 gr.add_edge((thisN,name))
48 if not gr.has_edge(ps):
50 gr.add_edge_attributes(ps,[('dir','none')])
54 def make_graph(ID,conn):
58 attr = [('fontsize',8)]
62 s = "SELECT name, id FROM people WHERE ID = ?;"
63 for row in askQuestion.run_query(s,(ID,)):
64 gr.add_node(row[0],attr)
69 [gr,couples] = parents(newID,newName,gr,attr,couples)
79 for couple in couples:
80 n1 = add_quotes(couple[0])
81 n2 = add_quotes(couple[1])
82 line = "\n{rank=same "+n1 + ' '\
88 gvv = gv.readstring(dot)
92 print "Content-type: image/" + format + "\n"
93 print gv.render(gvv,format)
94 askQuestion.close(conn)
96 form = cgi.FieldStorage()
98 ID = form.getvalue('id')
100 conn = askQuestion.connect()
102 askQuestion.close(conn)