def revertPrune( db, session, clade, editInfo ):

    if( editInfo.originalTreeType == 'source' ):
        
        prunedClade = build.snode2tree( db, editInfo.affected_node_id )
        
    else:
        
        prunedClade = build.gnode2tree( db, editInfo.affected_node_id, ( ( db.gnode.id == db.prune_detail.pruned_gnode ) &
                                                                         ( db.gnode.pruned == True ) &
                                                                         ( db.prune_detail.gtree_edit == editInfo.id ) ) )

    parentNode = util.getNodeById( clade, editInfo.affected_clade_id )

    if( parentNode is None ):
        return

    parentNode.add_child( prunedClade );
def revertReplace( db, session, tree, editInfo ):

    if( editInfo.originalTreeType == 'source' ):

        replacedClade = build.snode2tree( db, editInfo.affected_node_id )
        
    else:
    
        replacedClade = build.gnode2tree( db, editInfo.affected_node_id, ( ( db.gnode.id == db.prune_detail.pruned_gnode ) &
                                                                            ( db.prune_detail.gtree_edit == editInfo.id ) ) )
    
    replacingClade = util.getNodeById( tree, editInfo.target_gnode )
    #replacingClade = build.gnode2tree( db, editInfo.target_gnode )

    if( replacingClade is None ):
        return

    parentNode = replacingClade.parent

    parentNode.remove_child( replacingClade )
    parentNode.add_child( replacedClade )