--- /dev/null
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+
+# enable debugging
+import cgi
+import cgitb
+import sys
+import re
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import askQuestion
+import everyPage
+
+cgitb.enable()
+
+[conn,form]=everyPage.top()
+
+age = form.getvalue('age')
+if age == None:
+ age = 20
+
+result = re.match('[-]{0,1}[0-9]{1,4}$', str(age))
+
+if result == None:
+ everyPage.bad()
+else:
+ printMe = askQuestion.people_had_child_at_age(age,'<br>')
+ if len(printMe)<10:
+ printMe = 'sorry, no data <br>'
+
+ everyPage.good(printMe)
+
+
+everyPage.bottom(conn)
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+
+# enable debugging
+import cgi
+import cgitb
+import sys
+import re
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import askQuestion
+import everyPage
+
+cgitb.enable()
+
+[conn,form]=everyPage.top()
+
+age = form.getvalue('age')
+if age == None:
+ age = 20
+
+result = re.match('[-]{0,1}[0-9]{1,4}$', str(age))
+
+if result == None:
+ everyPage.bad()
+else:
+ printMe = askQuestion.people_died_at_age(age,'<br>')
+ if len(printMe)<10:
+ printMe = 'sorry, no data <br>'
+
+ everyPage.good(printMe)
+
+
+everyPage.bottom(conn)
--- /dev/null
+#!/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 add_quotes(s):
+ s = str(s)
+ return '\"'+s+'\"'
+
+def parents(ID,name,gr,attr,couples):
+
+ findParents = "SELECT Name,parentID FROM parents LEFT JOIN"\
+ +" people ON people.id=parents.parentid"\
+ +" WHERE parents.id=?;"
+
+ ps = ();
+ for row in askQuestion.run_query(findParents,(ID,)):
+ if row[0]!=None:
+ thisN = row[0] + ' '+str(row[1])
+ ps = ps + (thisN,)
+ if not gr.has_node(thisN):
+ gr.add_node(thisN,attr)
+ if not gr.has_edge((thisN,name)):
+ gr.add_edge((thisN,name))
+ newName = thisN
+ newID = row[1]
+ [gr, couples] = \
+ parents(newID,newName,gr,attr,couples)
+
+ else:
+ thisN = row[1] + ' p' + str(ID)
+ if not gr.has_node(thisN):
+ ps = ps + (thisN,)
+ gr.add_node(thisN,attr)
+ gr.add_edge((thisN,name))
+ if len(ps)==2:
+ if not gr.has_edge(ps):
+ gr.add_edge(ps)
+ gr.add_edge_attributes(ps,[('dir','none')])
+ couples.append(ps)
+ return [gr, couples]
+
+def make_graph(ID,conn):
+
+ # Graph creation
+ gr = digraph()
+ attr = [('fontsize',8)]
+ # Add nodes and edges
+
+ couples = [];
+ s = "SELECT name, id FROM people WHERE ID = ?;"
+ for row in askQuestion.run_query(s,(ID,)):
+ gr.add_node(row[0],attr)
+ newName = (row[0])
+ newID = row[1]
+
+
+ [gr,couples] = parents(newID,newName,gr,attr,couples)
+
+
+
+ #Draw as jpg
+ dot = write(gr)
+
+
+ dot = dot[:-2]
+
+ for couple in couples:
+ n1 = add_quotes(couple[0])
+ n2 = add_quotes(couple[1])
+ line = "\n{rank=same "+n1 + ' '\
+ +n2 + "}"
+ dot = dot + line
+ dot = dot + '\n}'
+
+
+ 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')
+
+conn = askQuestion.connect()
+make_graph(ID,conn)
+askQuestion.close(conn)
+
--- /dev/null
+#!/usr/bin/python
+
+import cgi
+import cgitb
+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 add_quotes(s):
+ s = str(s)
+ return '\"'+s+'\"'
+
+cgitb.enable()
+
+form = cgi.FieldStorage()
+conn = askQuestion.connect()
+
+famTree = askQuestion.list_people_parents()
+
+gr = digraph()
+
+couples = []
+
+attr = [('fontsize',8)]
+
+for i in range(len(famTree)):
+ self = famTree[i][0]
+ if not gr.has_node(self):
+ gr.add_node(self,attr)
+
+ for j in range(len(famTree[i][2])):
+ s = famTree[i][2][j]
+ ps = (self,s)
+
+ if not gr.has_node(s):
+ gr.add_node(s,attr)
+ a =1
+ if not gr.has_edge(ps):
+ gr.add_edge(ps)
+ a = ['dir','none']
+ gr.add_edge_attribute(ps,a)
+ couples.append(ps)
+
+ ps = ()
+ for j in range(len(famTree[i][1])):
+ p = famTree[i][1][j]
+ if p !='?':
+ ps = ps + (str(p),)
+ if not gr.has_node(p):
+ gr.add_node(p,attr)
+ if not gr.has_edge((p,self)):
+ gr.add_edge((p,self))
+
+ if len(ps)==2 and not gr.has_edge(ps) \
+ and not gr.has_edge((ps[1],ps[0])):
+ gr.add_edge(ps)
+ a = ['dir','none']
+ gr.add_edge_attribute(ps,a)
+ couples.append(ps)
+
+dot = write(gr)
+
+dot = write(gr)
+dot = dot[:-2]
+
+for couple in couples:
+ line = "\n{rank=same "+add_quotes(couple[0]) + ' '\
+ +add_quotes(couple[1])+"}"
+
+ dot = dot + line
+
+dot = dot + '\n}'
+
+
+gvv = gv.readstring(dot)
+format='dot'
+gv.layout(gvv,format)
+
+format = "jpg"
+print "Content-type: image/" + format + "\n"
+print gv.render(gvv,format)
+
+#gv.render(gvv,'png','famTree.png')
+
+askQuestion.close(conn)
--- /dev/null
+#!/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)
+
--- /dev/null
+#!/usr/bin/python
+
+import cgi
+import cgitb
+import sys
+import re
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import askQuestion
+import everyPage
+
+[conn,form]=everyPage.top()
+
+result = 1
+if result == None:
+ everyPage.bad()
+else:
+ printMe = askQuestion.count_age_at_child('<br>')
+ if len(printMe)<3:
+ printMe = 'sorry, no data <br>'
+
+ everyPage.good(printMe)
+
+
+everyPage.bottom(conn)
+
--- /dev/null
+#!/usr/bin/python
+
+import cgi
+import cgitb
+import sys
+import re
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import askQuestion
+import everyPage
+
+[conn,form]=everyPage.top()
+cgitb.enable()
+result = 1
+if result == None:
+ everyPage.bad()
+else:
+ printMe = askQuestion.count_age_at_death('<br>')
+ if len(printMe)<3:
+ printMe = 'sorry, no data <br>'
+
+ everyPage.good(printMe)
+
+
+everyPage.bottom(conn)
+
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+
+# enable debugging
+import cgi
+import cgitb
+import sys
+import re
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import askQuestion
+import everyPage
+
+cgitb.enable()
+
+[conn,form]=everyPage.top()
+
+name = form.getvalue('name')
+if name == None:
+ name = "Edward"
+
+result = re.match('[a-zA-z-%]*$', name)
+
+if result == None:
+ everyPage.bad()
+else:
+ printMe = askQuestion.people_with_name(name,'<br>')
+ if len(printMe)<10:
+ printMe = 'sorry, no data <br>'
+
+ everyPage.good(printMe)
+
+
+everyPage.bottom(conn)
--- /dev/null
+#!/usr/bin/python
+
+import cgi
+import cgitb
+
+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
+
+cgitb.enable()
+def add_quotes(s):
+ return '\"'+str(s)+'\"'
+
+
+def make_graph(Self,parents,children,otherparents,spouses):
+ # Graph creation
+ gr = digraph()
+
+ node_attr = [('fontsize',8)]
+
+ # Add nodes and edges
+ gr.add_node(Self,node_attr)
+
+
+ for p in parents:
+ if not gr.has_node(p):
+ gr.add_node(p,node_attr)
+ if not gr.has_edge((p,Self)):
+ gr.add_edge((p,Self))
+
+ couples=[]
+ if len(parents)==2:
+ ps = (parents[0],parents[1])
+ if not gr.has_edge(ps):
+ gr.add_edge(ps)
+ attr = [('dir','none')]
+ gr.add_edge_attributes(ps,attr)
+ couples.append(ps)
+
+ for i in range(len(children)):
+ if not gr.has_node(children[i]):
+ gr.add_node(children[i],node_attr)
+ if not gr.has_edge ((Self,children[i])):
+ gr.add_edge((Self,children[i]))
+ if not gr.has_node(otherparents[i]):
+ gr.add_node(otherparents[i],node_attr)
+ if not gr.has_edge((otherparents[i],children[i])):
+ gr.add_edge((otherparents[i],children[i]))
+
+
+ if not gr.has_edge((otherparents[i],Self)):
+ e = (otherparents[i],Self)
+ attr = [('dir','none')]
+ gr.add_edge(e)
+ gr.add_edge_attributes(e,attr)
+ couples.append(e)
+
+ for s in spouses:
+ if not gr.has_node(s):
+ gr.add_node(s,node_attr)
+ if not gr.has_edge((s,Self)):
+ e = (s,Self)
+ attr = [('dir','none')]
+ gr.add_edge(e)
+ gr.add_edge_attributes(e,attr)
+ couples.append(e)
+
+
+
+ #Draw as jpg
+ dot = write(gr)
+ dot = dot[:-2]
+
+ for couple in couples:
+ line = "\n{rank=same "+add_quotes(couple[0]) + ' '\
+ +add_quotes(couple[1])+"}"
+
+ dot = dot + line
+
+ dot = dot + '\n}'
+ gvv = gv.readstring(dot)
+ gv.layout(gvv,'dot')
+
+ format = 'jpg'
+
+ print "Content-type: image/" + format + "\n"
+ print gv.render(gvv,format)
+
+form = cgi.FieldStorage()
+
+Self = form.getvalue('Self')
+p = form.getlist('p')
+c = form.getlist('c')
+op = form.getlist('op')
+s = form.getlist('s')
+
+make_graph(Self,p,c,op,s)
+
--- /dev/null
+#!/usr/bin/python
+
+import cgi
+import cgitb
+
+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
+
+
+
+def make_graph(Self,parents,children,otherparents):
+ # Graph creation
+ gr = digraph()
+
+ # Add nodes and edges
+ gr.add_nodes([Self])
+
+ for p in parents:
+ gr.add_nodes([p])
+ gr.add_edge((p,Self))
+
+ for i in range(len(children)):
+ gr.add_nodes([children[i]])
+ gr.add_edge((Self,children[i]))
+ if not gr.has_node(otherparents[i]):
+ gr.add_nodes([otherparents[i]])
+ gr.add_edge((otherparents[i],children[i]))
+
+
+
+
+ #Draw as PNG
+# dot = write(gr)
+# gvv = gv.readstring(dot)
+# gv.layout(gvv,'dot')
+
+# print "Content-type: image/png\n"
+# print gv.render(gvv,'png')
+
+form = cgi.FieldStorage()
+
+Self = 'naath'
+p = ['Bob','Susan']
+c = ['Jane','Alice']
+op = ['Mary','Mary']
+
+make_graph(Self,p,c,op)
--- /dev/null
+#!/usr/bin/python
+
+import askQuestion
+import sys
+
+
+conn = askQuestion.connect()
+
+
+if len(sys.argv) < 2:
+ o = askQuestion.people_had_child_at_age(20,'\n')
+else:
+ for i in range(1,len(sys.argv)):
+ o = askQuestion.people_had_child_at_age(sys.argv[i],'\n')
+
+
+print o
+
+
+askQuestion.close(conn)