chiark / gitweb /
refactor to put findparents/spouses/children in one place
[familyTree.git] / cgiFiles / jointAncestorGraph.py
1 #!/usr/bin/python
2
3 import cgi
4 import cgitb
5 cgitb.enable()
6 import sys
7 sys.path.append('/home/naath/familyTreeProject/familyTree')
8 import make_dot as d
9 import askQuestion as aQ
10
11 def add_parents(ID,name,startLevel,stopLevel):
12
13         startLevel = startLevel + 1
14         if int(startLevel) == int(stopLevel)+1:
15                 return
16
17         pair=[]
18         [parents, parentIDs,parentNames] = aQ.find_parents(ID)
19
20         pair = []
21         for i in range(len(parents)):
22                 newName = parents[i]
23                 if parentIDs[i]!=0:
24                         newID = parentIDs[i]
25                         if not d.has_node(newName):
26                                 d.add_person(newName)
27                                 add_parents(newID,newName,\
28                                 startLevel,stopLevel)
29                 else:   
30                         d.add_person(newName)
31                 pair.append(newName)
32
33         d.add_marriage(pair[0], pair[1],[name],1)
34
35 def make_graph(ID,ID2,LA,LB):
36
37         d.start_dot()   
38
39         if int(LA)!=0:
40                 s = "SELECT name, id FROM people WHERE ID = ?;"
41                 for row in aQ.run_query(s,(ID,)):
42                         thisN = row[0]+' ' + str(row[1])
43                         d.add_highlight(thisN)
44                         newName = (thisN)
45                         newID = row[1]
46                 add_parents(newID,newName,0,LA)
47
48         if int(LB)!=0:
49                 s = "SELECT name, id FROM people WHERE ID = ?;"
50                 for row in aQ.run_query(s,(ID2,)):
51                         thisN = row[0] +' '+ str(row[1])
52                         d.add_highlight(thisN)
53                         newName = (thisN)
54                         newID = row[1]
55                 add_parents(newID,newName,0,LB)
56
57         d.add_subgraphs()
58         d.end_dot()
59         d.render_dot()
60         aQ.close(conn)
61
62 form = cgi.FieldStorage()
63
64 ID = form.getvalue('id')
65 ID2 = form.getvalue('id2')
66 LA = form.getvalue('LA')
67 LB = form.getvalue('LB')
68
69 conn = aQ.connect()
70 make_graph(ID,ID2,LA,LB)
71 aQ.close(conn)
72