chiark / gitweb /
changed graphs to manual dot file; added pictures; faffed about with text
[familyTree.git] / cgiFiles / jointAncestorGraph.py
index cbcdc1e0c3299f0c78ea799a862e83b38f4a9823..099f042719164ac1bfd4ef6eb05df5a97b643682 100755 (executable)
@@ -5,16 +5,10 @@ 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 make_dot as d
 import askQuestion
 
-def parents(ID,name,gr,attr,startLevel,stopLevel):
+def parents(ID,name,startLevel,stopLevel):
 
        findParents = "SELECT Name,parentID FROM parents LEFT JOIN"\
                         +" people ON people.id=parents.parentid"\
@@ -22,60 +16,54 @@ def parents(ID,name,gr,attr,startLevel,stopLevel):
 
        startLevel = startLevel + 1
        if int(startLevel) == int(stopLevel)+1:
-               return gr
+               return
 
+       pair=[]
        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))
+                       
+                       pair.append(thisN)
                        newName = thisN
                        newID = row[1]
-                       gr = parents(newID,newName,gr,attr,startLevel,stopLevel)
+                       if not d.has_node(thisN):
+                               d.add_person(thisN)
+                               parents(newID,newName,startLevel,stopLevel)
 
                else:
-                       if not gr.has_node(row[1]):
-                               gr.add_node(row[1],attr)
-                               gr.add_edge((row[1],name))                      
-       return gr
+                       thisN = row[1] + ',p ' + str(ID)
+                       pair.append(thisN)
+                       d.add_person(thisN)
 
-def make_graph(ID,ID2,LA,LB):
        
-       # Graph creation
-       gr = digraph()
-       attr = [('fontsize',8)]
-       # Add nodes and edges
+
+       d.add_marriage(pair[0], pair[1],[name],1)
+
+def make_graph(ID,ID2,LA,LB):
+
+       d.start_dot()   
 
        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)
+                       d.add_highlight(thisN)
                        newName = (thisN)
                        newID = row[1]
-               gr = parents(newID,newName,gr,attr,0,LA)
+               parents(newID,newName,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)
+                       d.add_highlight(thisN)
                        newName = (thisN)
                        newID = row[1]
+               parents(newID,newName,0,LB)
 
-               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)
+       d.add_subgraphs()
+       d.end_dot()
+       d.render_dot()
        askQuestion.close(conn)
 
 form = cgi.FieldStorage()