Exemple #1
0
    def _helper(meta_tree, query_func, selected_key_trails, *curr_key_trail):
        result = query_func(meta_tree, *curr_key_trail)
        if result:
            selected_key_trails.add(tuple(curr_key_trail))

        node = metatree.get_node(meta_tree, *curr_key_trail)
        for key in node.keys():
            _helper(meta_tree, query_func, selected_key_trails, *(curr_key_trail + (key,)))
Exemple #2
0
def index_children(meta_tree, field_name, *key_trail):
    def _helper(node, field_name):
        meta_data = node.metadata
        if field_name in meta_data:
            return helpers.listify(meta_data[field_name])
        else:
            child_agg = None
            for key in node.keys():
                child_ret = _helper(node[key], field_name)
                if child_ret is not None:
                    if child_agg is None:
                        child_agg = []
                    child_agg += child_ret
            return helpers.listify(child_agg)

    node = get_node(meta_tree, *key_trail)
    ret = None
    for key in node.keys():
        child_agg = _helper(node[key], field_name)
        if child_agg is not None:
            if ret is None:
                ret = []
            ret += child_agg
    return helpers.listify(ret)