コード例 #1
0
def graftClade( tree, graftingOntoNodeId, graftingClade ):

    parent = util.getNodeById( tree, graftingOntoNodeId )
    parent.add_child( graftingClade )
    
    graftingClade.meta[ 'targetGNode' ] = True
    parent.meta[ 'affectedCladeId' ] = True
コード例 #2
0
def replaceClade( tree, cladeToBeReplacedId, newClade ):

    cladeToReplace = util.getNodeById( tree, cladeToBeReplacedId )
    parentClade = cladeToReplace.parent

    parentClade.remove_child( cladeToReplace )
    parentClade.add_child( newClade )
コード例 #3
0
def postReplaceDBUpdate( db, session, auth, tree, treeType, replacedCladeId, newCladeId, requestVars ):    
    
    if treeType == 'source':

        replacedNode = db( db.snode.id == replacedCladeId ).select()[0]
        
        gtreeId = createGTreeRecord( db, auth, requestVars.treeName, requestVars.treeDescription )
        
        index( tree )

        util.gatherTreeInfo( tree, session )
        
        reference = dict( newCladeId = newCladeId, targetGNode = None, oldAffectedCladeId = replacedNode.parent, newAffectedCladeId = None )
        
        insertSnodesToGtree( db, gtreeId, tree, None, reference )
        
        createEditRecord( db, auth, gtreeId, 'replace', reference['newAffectedCladeId'], replacedNode.id, newCladeId, requestVars.comment, treeType, auth.user.id, reference['targetGNode'] )

    else:
        
        replacedNode = db( db.gnode.id == replacedCladeId ).select()[0]
        
        index( tree )
        
        util.gatherTreeInfo( tree, session )
        
        updateGtreeDB( db, tree )
        
        reference = dict( newCladeId = newCladeId, targetGNode = None )
        
        insertGNodesToGtree( db, requestVars.treeId, util.getNodeById( tree, newCladeId ), replacedNode.parent, requestVars.clipboardNodeType, reference )

        editId = createEditRecord( db, auth, requestVars.treeId, 'replace', replacedNode.parent, replacedNode.id, requestVars.clipboardNodeId, requestVars.comment, treeType, auth.user.id, reference['targetGNode'] )
    
        pruneGNodeRecords( db, requestVars.treeId, replacedNode, editId )
コード例 #4
0
def graftClade( tree, graftingOntoNodeId, graftingClade ):

    parent = util.getNodeById( tree, graftingOntoNodeId )
    parent.add_child( graftingClade )
    
    graftingClade.meta[ 'targetGNode' ] = True
    parent.meta[ 'affectedCladeId' ] = True
コード例 #5
0
def pruneClade( tree, nodeId ):
    
    cladeToPrune = util.getNodeById( tree, nodeId )
    parentClade = cladeToPrune.parent

    parentClade.remove_child( cladeToPrune )

    parentClade.meta[ 'affectedCladeId' ] = True
コード例 #6
0
def pruneClade( tree, nodeId ):
    
    cladeToPrune = util.getNodeById( tree, nodeId )
    parentClade = cladeToPrune.parent

    parentClade.remove_child( cladeToPrune )

    parentClade.meta[ 'affectedCladeId' ] = True
コード例 #7
0
def revertPrune( db, session, tree, editInfo ):

    prunedClade = \
        getattr( build, ''.join( [ editInfo.originalTreeType, 'Clade' ] ) )\
            ( db, editInfo.affected_node_id, Storage(), Storage( pruned = True, editId = editInfo.id ) )

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

    parentNode.add_child( prunedClade );
コード例 #8
0
def revertPrune( db, session, tree, editInfo ):

    prunedClade = \
        getattr( build, ''.join( [ editInfo.originalTreeType, 'Clade' ] ) )\
            ( db, editInfo.affected_node_id, Storage(), Storage( pruned = True, editId = editInfo.id ) )

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

    parentNode.add_child( prunedClade );
コード例 #9
0
def replaceClade( tree, replacedNodeId, replacingClade ):

    cladeToReplace = util.getNodeById( tree, replacedNodeId )
    parentOfReplaced = cladeToReplace.parent

    parentOfReplaced.remove_child( cladeToReplace )
    parentOfReplaced.add_child( replacingClade )

    parentOfReplaced.meta[ 'affectedCladeId' ] = True
    replacingClade.meta[ 'targetGNode' ] = True
コード例 #10
0
def revertGraft( db, session, tree, editInfo ):

    graftedClade = util.getNodeById( tree, editInfo.target_gnode )
    #graftedClade = build.gnode2tree( db, editInfo.target_gnode )

    if( graftedClade is None ):
        return

    parentNode = graftedClade.parent
    parentNode.remove_child( graftedClade )
コード例 #11
0
def replaceClade( tree, replacedNodeId, replacingClade ):

    cladeToReplace = util.getNodeById( tree, replacedNodeId )
    parentOfReplaced = cladeToReplace.parent

    parentOfReplaced.remove_child( cladeToReplace )
    parentOfReplaced.add_child( replacingClade )

    parentOfReplaced.meta[ 'affectedCladeId' ] = True
    replacingClade.meta[ 'targetGNode' ] = True
コード例 #12
0
def revertReplace( db, session, tree, editInfo ):

    replacedClade = \
        getattr( build, ''.join( [ editInfo.originalTreeType, 'Clade' ] ) )\
            ( db, editInfo.affected_node_id, Storage(), Storage( pruned = True, editId = editInfo.id ) )

    replacingClade = util.getNodeById( tree, editInfo.target_gnode )

    parentNode = replacingClade.parent

    parentNode.remove_child( replacingClade )
    parentNode.add_child( replacedClade )
コード例 #13
0
def revertReplace( db, session, tree, editInfo ):

    replacedClade = \
        getattr( build, ''.join( [ editInfo.originalTreeType, 'Clade' ] ) )\
            ( db, editInfo.affected_node_id, Storage(), Storage( pruned = True, editId = editInfo.id ) )

    replacingClade = util.getNodeById( tree, editInfo.target_gnode )

    parentNode = replacingClade.parent

    parentNode.remove_child( replacingClade )
    parentNode.add_child( replacedClade )
コード例 #14
0
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 );
コード例 #15
0
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 )
コード例 #16
0
def revertGraft( db, session, tree, editInfo ):

    graftedClade = util.getNodeById( tree, editInfo.target_gnode )

    parentNode = graftedClade.parent
    parentNode.remove_child( graftedClade )
コード例 #17
0
def pruneClade( tree, nodeId, hack=None ):
    
    cladeToPrune = util.getNodeById( tree, nodeId )
    parentClade = cladeToPrune.parent

    parentClade.remove_child( cladeToPrune )
コード例 #18
0
def graftClade( tree, siblingCladeId, newClade ):

    sibling = util.getNodeById( tree, siblingCladeId )
    parent = sibling.parent
    parent.add_child( newClade )
コード例 #19
0
def postGraftDBUpdate( db, session, auth):

    import sys, datetime
    sys.stdout.write( str( 'update db : ' ) )
    sys.stdout.write( str( datetime.datetime.now() ) )
    sys.stdout.write( "\n" )
    
    nodeTable = None

    if( session.TreeViewer.type == 'source' ):

       nodeTable = db.snode 
        
       session.TreeViewer.treeId = createGTreeRecord( db, auth, session.treeEdit.treeName, session.treeEdit.treeDescription )
    
    else:

        nodeTable = db.gnode


    graftedCladeSiblingRecord = db( nodeTable.id == session.treeEdit.graftedCladeSiblingId ).select().first()

    index( session.treeEdit.currentTree )

    if( session.TreeViewer.type == 'source' ):
        
        reference = \
            dict( newCladeId = session.treeEdit.graftedCladeNodeId,
                  targetGNode = None,
                  oldAffectedCladeId = graftedCladeSiblingRecord.parent,
                  newAffectedCladeId = None )
        
        insertSnodesToGtree( db, session.TreeViewer.treeId, session.treeEdit.currentTree, None, reference )
        
        createEditRecord( db, auth, session.TreeViewer.treeId, 'graft', reference['newAffectedCladeId'], graftedCladeSiblingRecord.id, session.treeEdit.graftedCladeNodeId, session.treeEdit.comment, session.TreeViewer.type, auth.user.id, reference['targetGNode'] )
        
        updateSessionCauseNewGtree( session )

    else:

        updateGtreeDB( db, session.treeEdit.currentTree )
        
        reference = dict( newCladeId = session.treeEdit.graftedCladeNodeId, targetGNode = None )
        
        insertGNodesToGtree( db, session.TreeViewer.treeId, util.getNodeById( session.treeEdit.currentTree, session.treeEdit.graftedCladeNodeId ), graftedCladeSiblingRecord.parent, session.treeEdit.graftedCladeType, reference )
        
        createEditRecord( db, auth, session.TreeViewer.treeId, 'graft', graftedCladeSiblingRecord.parent, graftedCladeSiblingRecord.id, session.treeEdit.graftedCladeNodeId, session.treeEdit.comment, session.TreeViewer.type, auth.user.id, reference['targetGNode'] )

    sys.stdout.write( str( 'done update db : ' ) )
    sys.stdout.write( str( datetime.datetime.now() ) )
    sys.stdout.write( "\n" )

    sys.stdout.write( str( 'preprocess new tree : ' ) )
    sys.stdout.write( str( datetime.datetime.now() ) )
    sys.stdout.write( "\n" )

    #util.gatherTreeInfo( session.treeEdit.currentTree, session, db, True )
    
    sys.stdout.write( str( 'done preprocess new tree : ' ) )
    sys.stdout.write( str( datetime.datetime.now() ) )
    sys.stdout.write( "\n" )
コード例 #20
0
def revertGraft( db, session, tree, editInfo ):

    graftedClade = util.getNodeById( tree, editInfo.target_gnode )

    parentNode = graftedClade.parent
    parentNode.remove_child( graftedClade )