All pastes #579370 Raw Edit

Something

public text v1 · immutable
·published 2007-06-20 17:01 UTC
rendered paste body
# Dada una sesion, una lista de nodos, un tiempo y un numero de destino
# devuelve el nodo elegido, su regla de precio, su ruta, sus reescrituras
# y la lista de nodos validos hasta donde se busco
def _call_data(session, nodes, now, called):
    node, rewrites, rules, rule, routes, route = (None,)*6
    final_nodes = []
    j = 0
    for nodes_max in nodes:        
        if node: break
        j = j+1
        rnodes = nodes_max[:]
        # Defino cuales son los nodos que puedo elegir
        be_chosen = range(len(nodes_max))
        # Mientras existan nodos elegibles con esa prioridad
        while be_chosen != []:        
            # Elijo uno de los nodos elegible con prioridad maxima
            chosen = _rand(len(be_chosen))            
            # Elimino el numero de ese nodo para no elegirlo nuevamente                                      
            del be_chosen[chosen]
            n = rnodes[chosen]                   
            rewrites = _node_rewrites(session, n)
            rules = _node_price_rules(session, n, now)
            if len(rules)>0:
                for rp in rules:
                    if rule: break
                    routes = _rule_routes(session, rp)
                    if len(routes)>0:
                        for r in routes:
                            if route: break
                            if called.startswith(r.matching):
                                rule, route, node = rp, r, n
                                del rnodes[chosen]
            elif not len(rules) or not rule: del rnodes[chosen]
        final_nodes.append(rnodes)        
        
    final_nodes = final_nodes + nodes[j, len(nodes)]    
    return node, rule, route, rewrites, final_nodes