+#!/usr/bin/python
+
+import cgi
+import cgitb
+cgitb.enable()
+import sys
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import pygraph
+from pygraph.classes.graph import graph
+from pygraph.classes.digraph import digraph
+from pygraph.algorithms.searching import breadth_first_search
+from pygraph.readwrite.dot import write
+import gv
+import StringIO
+import askQuestion
+
+def parents(ID,name,gr,attr,startLevel,stopLevel):
+
+ findParents = "SELECT Name,parentID FROM parents LEFT JOIN"\
+ +" people ON people.id=parents.parentid"\
+ +" WHERE parents.id=?;"
+
+ startLevel = startLevel + 1
+ if int(startLevel) == int(stopLevel)+1:
+ return gr
+
+ for row in askQuestion.run_query(findParents,(ID,)):
+ if row[0]!=None:
+ thisN = row[0] + ' '+str(row[1])
+ if not gr.has_node(thisN):
+ gr.add_node(thisN,attr)
+ if gr.has_edge((thisN,name)):
+ return gr
+ gr.add_edge((thisN,name))
+ newName = thisN
+ newID = row[1]
+ gr = parents(newID,newName,gr,attr,startLevel,stopLevel)
+
+ else:
+ if not gr.has_node(row[1]):
+ gr.add_node(row[1],attr)
+ gr.add_edge((row[1],name))
+ return gr
+
+def make_graph(ID,ID2,LA,LB):
+
+ # Graph creation
+ gr = digraph()
+ attr = [('fontsize',8)]
+ # Add nodes and edges
+
+ if int(LA)!=0:
+ s = "SELECT name, id FROM people WHERE ID = ?;"
+ for row in askQuestion.run_query(s,(ID,)):
+ thisN = row[0]+' ' + str(row[1])
+ gr.add_node(thisN,attr)
+ newName = (thisN)
+ newID = row[1]
+ gr = parents(newID,newName,gr,attr,0,LA)
+
+ if int(LB)!=0:
+ s = "SELECT name, id FROM people WHERE ID = ?;"
+ for row in askQuestion.run_query(s,(ID2,)):
+ thisN = row[0] +' '+ str(row[1])
+ gr.add_node(thisN,attr)
+ newName = (thisN)
+ newID = row[1]
+
+ gr = parents(newID,newName,gr,attr,0,LB)
+
+ #Draw as jpg
+ dot = write(gr)
+ gvv = gv.readstring(dot)
+ gv.layout(gvv,'dot')
+
+ format = 'jpg'
+ print "Content-type: image/" + format + "\n"
+ print gv.render(gvv,format)
+ askQuestion.close(conn)
+
+form = cgi.FieldStorage()
+
+ID = form.getvalue('id')
+ID2 = form.getvalue('id2')
+LA = form.getvalue('LA')
+LB = form.getvalue('LB')
+
+conn = askQuestion.connect()
+make_graph(ID,ID2,LA,LB)
+askQuestion.close(conn)
+