Exemplo n.º 1
0
def dict_merge(root, node, combined):
    # Merge only if node with same name exists already in the list of dicts
    if node['name'] in [item.get('name') for item in root]:
        existing_node = get_dict(root, 'name', node['name'])
        # For combined report of branches, Accounts have subnodes of accounts of each branch.
        if combined and node.get('type') == 'Account':
            # Find existing node and make it a subnode (only if it isn't a combined node already)
            if not existing_node.get('combined'):
                old_node = copy.deepcopy(existing_node)
                old_node['name'] = old_node['name'] + ' [' + str(
                    old_node['company']) + ']'
                existing_node['combined'] = True
                existing_node['nodes'].append(old_node)
                existing_node['url'] = None
            # Create new subnode
            new_node = copy.deepcopy(node)
            new_node['name'] = node['name'] + ' [' + str(node['company']) + ']'
            existing_node['nodes'].append(new_node)
            # existing_node['name'] += ' [Merged]'
        existing_node['dr'] += node['dr']
        existing_node['cr'] += node['cr']
        if len(node['nodes']):
            for inner_node in node['nodes']:
                dict_merge(existing_node['nodes'], inner_node, combined)
    else:
        root.append(node)
    return root
Exemplo n.º 2
0
def dict_merge(root, node, combined):
    # Merge only if node with same name exists already in the list of dicts
    if node['name'] in [item.get('name') for item in root]:
        existing_node = get_dict(root, 'name', node['name'])
        # For combined report of branches, Accounts have subnodes of accounts of each branch.
        if combined and node.get('type') == 'Account':
            # Find existing node and make it a subnode (only if it isn't a combined node already)
            if not existing_node.get('combined'):
                old_node = copy.deepcopy(existing_node)
                old_node['name'] = old_node['name'] + ' [' + str(old_node['company']) + ']'
                existing_node['combined'] = True
                existing_node['nodes'].append(old_node)
                existing_node['url'] = None
            # Create new subnode
            new_node = copy.deepcopy(node)
            new_node['name'] = node['name'] + ' [' + str(node['company']) + ']'
            existing_node['nodes'].append(new_node)
            # existing_node['name'] += ' [Merged]'
        existing_node['dr'] += node['dr']
        existing_node['cr'] += node['cr']
        if len(node['nodes']):
            for inner_node in node['nodes']:
                dict_merge(existing_node['nodes'], inner_node, combined)
    else:
        root.append(node)
    return root
Exemplo n.º 3
0
def get_subnode(node, name):
    return get_dict(node['nodes'], 'name', name)
Exemplo n.º 4
0
def get_subnode(node, name):
    return get_dict(node['nodes'], 'name', name)