Ejemplo n.º 1
0
def get_nodes_and_edges(name='my_graph'):
    graph = Graph(cleanup(name))
    edges = []
    for orm_node in Node.objects.select_related():
        graph.add_node(get_node(orm_node.name))
        for parent in orm_node.parent.iterator():
            edges.append((cleanup(parent.parent.name),cleanup(parent.child.name)))

        for child in orm_node.child.iterator():
            edges.append((cleanup(child.parent.name),cleanup(child.child.name)))            

    edges = list(set(edges)) # remove duplicates   
    for edge in edges:
        e = Edge(edge[0],edge[1])
        e.set_target('_parent')        
        e.set_arrowhead('vee')
        graph.add_edge(e)            
    return graph