def manageActive(): changesMade= False client= Client(keys.api_key, keys.user_auth_token) # for each card in "Project Backlog" board: # if card is labeled "Active" (green): # record its original list & pos # mark the description with its origin project list name (if not "General") # move it to "This Week" list in "Active" board # for each card in "Active" board: # if card is in "Finished" or "Overview" list: # remove label "Active" (green) # else: # if card is not labeled "Active" (green): # move it back to its original list & pos (in "Project Backlog" board) # remove project mark in description # for each card in "Finished" list that has been archived: # move such cards to lists in the "Closed" board that correspond to their # origin project list in "Project Backlog" board, creating if needed, # then un-archive the card in its new position # ---------------------------------------------------------------------------- # for each card in "Project Backlog" board: backlogBoard= Board(client, keys.boardIds['backlog']) backlogCards= backlogBoard.getCardsJson(backlogBoard.base_uri) for card in backlogCards: # if card is labeled "Active" (green): labels= [i['color'] for i in card['labels']] if 'green' in labels: cardHandle= Card(client, card['id']) originDB[str(card['id'])]= (card['idList'], card['pos']) # mark its description with the project list name projectName= List(client, card['idList']).getListInformation()['name'] desc= markProjectInDesc(card['desc'], projectName) cardHandle.setDesc(desc) # move it to "This Week" list in "Active" board cardHandle.moveTo(keys.boardIds['active'], keys.listIds['this week']) # reset labels for l in labels: cardHandle.addLabel(l) changesMade= True # for each card in "Active" board: activeBoard= Board(client, keys.boardIds['active']) activeCards= activeBoard.getCardsJson(activeBoard.base_uri) for card in activeCards: labels= [i['color'] for i in card['labels']] # if card is in "Finished" list: if ((card['idList'] == keys.listIds['finished']) or (card['idList'] == keys.listIds['overview'])): # remove "Active" (green) labels cardHandle= Card(client, card['id']) if 'green' in labels: cardHandle.removeLabel('green') changesMade= True else: # if card is not labeled "Active" (green): if 'green' not in labels: cardHandle= Card(client, card['id']) ## if card was moved here from the backlog: #actions= cardHandle.getActions('moveCardToBoard')['actions'] #if ((len(actions) > 0) and # (actions[0]['data']['boardSource']['id'] == keys.boardIds['backlog'])): # if card has an origin project entry if (str(card['id']) in originDB): # remove project list name from its description desc= markProjectInDesc(card['desc'], None) cardHandle.setDesc(desc) # move it back to its original list & pos (in "Project Backlog" board) origin= originDB[str(card['id'])] cardHandle.moveTo(keys.boardIds['backlog'], origin[0], origin[1]) # reset labels for l in labels: cardHandle.addLabel(l) else: # card was created here or manually moved here; # mark active (green) and add a generic project origin entry cardHandle.addLabel('green') originDB[str(card['id'])]= (keys.listIds['general'], 'top') changesMade= True # for each card in Active / Finished that has been archived activeFinishedCards= List(client, keys.listIds['finished']) activeFinishedCardsInfo= activeFinishedCards.fetchJson(activeFinishedCards.base_uri+'/cards', query_params={'filter':'closed'}) closedBoard= Board(client, keys.boardIds['closed']) for card in activeFinishedCardsInfo: cardHandle= Card(client, card['id']) changesMade= True # find origin destination try: originListId, pos= originDB[str(card['id'])] destListName= List(client, originListId).getListInformation()['name'] destListId= None # get id in closed board for list with that name, or else make one for l in closedBoard.getListsJson(closedBoard.base_uri): if l['name'] == destListName: #print '[%s] [%s] %s' %(l['name'], destListName, l['name'] == destListName) destListId= (l['id'], 'top') if not destListId: newList= closedBoard.addList({'name': destListName, 'pos': 'bottom'}) #print 'CREATED:', newList.name, newList.id destListId= (newList.id, 'top') except (ResourceUnavailable, KeyError): # fallback dest destListId= (keys.listIds['closed general'], 'top') destListName= 'General' # remove project list name from its description desc= markProjectInDesc(card['desc'], None) cardHandle.setDesc(desc) #print card['name'], 'to:', destListName, destListId[0] try: # move card to destination list on closed board and un-archive cardHandle.moveTo(keys.boardIds['closed'], destListId[0], destListId[1]) cardHandle.setClosed('false') except ResourceUnavailable: # sometimes new lists aren't ready quite yet. Let's try next time pass originDB.sync() return changesMade