import cgitb
import sys
sys.path.append('/home/naath/familyTreeProject/familyTree')
-import askQuestion
+import askQuestion as aQ
import make_dot as d
def add_quotes(s):
cgitb.enable()
form = cgi.FieldStorage()
-conn = askQuestion.connect()
+conn = aQ.connect()
-famTree = askQuestion.list_people_parents()
+famTree = aQ.list_people_parents()
d.start_dot(8)
for i in range(len(famTree)):
#for i in range(100):
self = famTree[i][0]
- d.add_person(self)
+ d.add_person(self)
ps = []
for j in range(len(famTree[i][1])):
s = famTree[i][2][j]
ps = (self,s)
- d.add_person(s)
d.add_marriage(self,s,[],0)
d.add_subgraph(ps)
d.end_dot()
d.render_dot()
-askQuestion.close(conn)
+aQ.close(conn)
import make_dot as d
import askQuestion as aQ
-def add_parents(ID,name,startLevel,stopLevel):
-
- startLevel = startLevel + 1
- if int(startLevel) == int(stopLevel)+1:
- return
-
- pair=[]
- [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)
-
def find_oneside_path(ID,start,stop):
global myP
global myC
d.start_dot(8)
done = 0
- find_path(ID,ID2,LA,LB)
+ for tID in [ID, ID2]:
+ [Self, selfID, selfName] = aQ.find_person(tID)
+ d.add_highlight(Self)
-# if int(LA)!=0:
-# [Self, selfID, selfName] = aQ.find_person(ID)
-# d.add_highlight(Self)
-# add_parents(selfID,Self,0,LA)
-#
-# if int(LB)!=0:
-# [Self, selfID, selfName] = aQ.find_person(ID2)
-# d.add_highlight(Self)
-# add_parents(selfID,Self,0,LB)
+ find_path(ID,ID2,LA,LB)
d.add_subgraphs()
d.end_dot()
import cgitb
import gv
import re
+import sys
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import askQuestion as aQ
+
cgitb.enable()
def add_quotes(s):
def end_dot():
global dot
+
dot = dot + "}"
def start_dot(fs):
edges=[]
cNodes={}
dot = "digraph G{\n"
- dot = dot + "ranksep = 0.5 nodesep = 0\n"
+ dot = dot + "ranksep = 0.2 nodesep = 0\n"
subgraphs=[]
set_attr(fs)
def add_highlight(name):
- add_node(name,highlight_attr)
+ global dot
-def add_person(name):
- add_node(name,person_attr)
+ add_person(name)
+ dot = dot +'\n'\
+ 'subgraph clusterhl {'+add_quotes(name)+';\n'
+ for a in highlight_attr:
+ dot = dot + a[0] + '=' +a[1] +';\n'
+ dot = dot + '}'
+
+def add_person(name):
+ try:
+ k=aQ.isKing(name)
+ except:
+ k=0
+ ln = name.replace(', ','\\n')
+ ln = ln.replace(',','\\n')
+ ln = ln.replace(' ','\\n')
+ myLabel = '"'+str(ln)+'"'
+
+ if k==1:
+ add_node(name,king_attr+[('label',myLabel)])
+ else:
+ add_node(name,person_attr+[('label',myLabel)])
def add_spot(name):
add_node(name,spot_attr)
def set_attr(fs):
global person_attr
global highlight_attr
+ global king_attr
global spot_attr
global edge_attr
global invis_attr
global debug_attr
global debug_edge_attr
zero_size = [('width','0'),('height','0')]
- person_attr = [('fontsize',str(fs)),('shape','plaintext')] + zero_size
- highlight_attr = person_attr + \
- [('fontcolor','red'),('shape','box'),('color','red')]
+ person_attr = [('fontsize',str(fs))]+\
+ [('shape','plaintext'),('margin','0.1'),\
+ ('style','filled'),('fillcolor','white')] +\
+ zero_size
+ highlight_attr = \
+ [('shape','box'),('color','red'),('style','filled')]
+ king_attr = person_attr +\
+ [('fontcolor','purple4'),('shape','house'),('color','purple4')]
debug_attr = person_attr + [('fontcolor','green')]
spot_attr = [('shape','point')] + zero_size
edge_attr = [('len','0'),('arrowsize','0.5')]
return attr_str
def render_dot():
+
+ f = open('tempfile','w')
+ f.write(dot)
+ f.close
+
gvv = gv.readstring(dot)
gv.layout(gvv,'dot')
import findYear
from string import Template
import cgi
+import re
global link_Template
link_Template= Template(\
selfName = row[1]
selfID = row[2]
return [Self, selfID,selfName]
+def isKing(ID):
+ ID = int(ID.split(',')[-1])
+ s= "SELECT style FROM styles WHERE ID=?"
+ t = (ID,)
+
+ k = 0
+ for row in run_query(s,t):
+ a=re.match('.*King',row[0])
+ b=re.match('.*Queen',row[0])
+ if a!=None or b!=None:
+ k=1
+
+ return k
def find_parents(ID):
s = "SELECT name, parentID"\
pID = row[1]
pN = row[0]
else:
- p = row[1] + ',p ' + str(ID)
+ p = row[1] + ',p' + str(ID)
pID = 0
pN = row[1]
parents.append(p)
sID = row[1]
sN = row[0]
elif row[1] !='':
- s=row[1] + ",s " +str(ID)
+ s=row[1] + ",s" +str(ID)
sID = 0
sN = row[1]
if row[1] !='':
opID = row[2]
opN = row[3]
else:
- op = row[2] + ',s ' + str(ID)
+ op = row[2] + ',s' + str(ID)
opID = 0
opN = row[2]
Sigehelm (163) was NOT MARRIED TO Prince Edward (162)
+
Check cousin marriages against:
http://en.wikipedia.org/wiki/List_of_coupled_cousins#Royalty
+
+Fulk DID NOT marry Henry IV!