def get_list_obj(**kwargs): debug = kwargs['debug'] verbose = kwargs['verbose'] conn = kwargs['trelloConn'] board_id = kwargs['boardID'] list_name = kwargs['listName'] # Get the board boardObj = Board(conn, board_id) # Find the Done list ID for boardListObj in boardObj.getLists(): listDict = boardListObj.getListInformation() if (listDict['name'] == list_name): if (debug >= 1): print "Found %s as ID for list %s" % (listDict['id'], list_name) returnObj = boardListObj if (debug >= 2): print "%s : %s" % (listDict['id'], listDict['name']) return returnObj
class TrelloBoard(QtGui.QMainWindow): pointingMultiplier = QtCore.pyqtSignal(int) def __init__(self, client, app, boardId, config): QtGui.QMainWindow.__init__(self) self.lists = [] self.app = app self.client = client self.boardId = boardId self.config = config self.trelloBoardStyle = self.config.get('TrelloBoard', 'style') self.board = Board(client, boardId) self.screen = QtGui.QDesktopWidget().screenGeometry() self.setMouseTracking(True) self.updatePointingMultiplier() self.style() self.show() def style(self): self.window = QtGui.QWidget(); hbox = QtGui.QHBoxLayout() self.window.setLayout(hbox) self.setCentralWidget(self.window) hbox.setSpacing(0) lists = self.board.getLists() for rawlist in lists: cards = rawlist.getCards() hbox.addWidget( TrelloList( self.config, self, self.client, rawlist.id, rawlist.name, cards ) ) self.scrollArea = QtGui.QScrollArea() self.scrollArea.setWidgetResizable(True) self.scrollArea.setEnabled(True) self.scrollArea.setWidget(self.window) self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.setCentralWidget(self.scrollArea) self.currentCard = None self.shadowCard = None self.setWindowTitle(self.config.get('main', 'title')) self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.setStyleSheet(self.trelloBoardStyle) self.logo = QtGui.QLabel(self) self.logo.setPixmap(QtGui.QPixmap(os.getcwd() + self.config.get('resources', 'trellol_logo_small'))) #self.cursorImg = QtGui.QPixmap(os.getcwd() + self.config.get('resources', 'ball_cursor')) self.cursorImg = QtGui.QPixmap(os.getcwd() + self.config.get('resources', 'null_cursor')) self.setCursor(QtGui.QCursor(self.cursorImg, -1, -1)) self.center() def center(self): mainposx = self.config.getint('main', 'pos_x') mainposy = self.config.getint('main', 'pos_y') mainwidth = self.config.getint('main', 'width') mainheight = self.config.getint('main', 'height') self.setGeometry(mainposx, mainposy, mainwidth, mainheight) size = self.geometry() self.move((self.screen.width() - size.width()) / 2, (self.screen.height() - size.height()) / 2) def keyPressEvent(self, event): key = event.key() if key == QtCore.Qt.Key_Escape: self.close() elif key == QtCore.Qt.Key_F: if self.windowState() & QtCore.Qt.WindowFullScreen: self.showNormal() else: self.showFullScreen() self.updatePointingMultiplier() return QtGui.QWidget.keyPressEvent(self, event) def resizeEvent(self, e): logo_h = self.config.getint('TrelloBoard', 'logo_height') logo_w = self.config.getint('TrelloBoard', 'logo_width') logo_x = self.config.getint('TrelloBoard', 'logo_pos_x') logo_y = self.height() - logo_h - self.config.getint('TrelloBoard', 'logo_pos_x') self.logo.setGeometry(logo_x, logo_y, logo_w, logo_h) def mouseMoveEvent(self, event): if (self.currentCard is not None): TrelloCard.mouseMoveEvent(self.currentCard, event) def mousePressEvent(self, event): if (self.currentCard is not None): self.cardDetails = TrelloCardDescription(self, self.currentCard.id) self.cardDetails.exec_() def updatePointingMultiplier(self): diagonal = math.sqrt( (math.pow(self.width(), 2) + math.pow(self.height(), 2))) multiplier = max(min(diagonal / 100, 20), 5) self.pointingMultiplier.emit(multiplier)
import re import ast import sys from pprint import pprint from trolly.client import Client from trolly.board import Board from trolly.list import List import keys if __name__ == '__main__': client= Client(keys.api_key, keys.user_auth_token) board= Board(client, sys.argv[1]) for l in board.getLists(): print l.name, l.id
class TrelloTests( unittest.TestCase ): def setUp( self ): self.client = Client( api_key, user_auth_token ) self.org = Organisation( self.client, organisation ) self.board = Board( self.client, board_id ) self.list = List( self.client, list_id ) self.card = Card( self.client, card_id ) self.checklist = Checklist( self.client, checklist_id ) self.member = Member( self.client, member_id ) def tearDown( self ): pass def test_org_01_getBoardInfo( self ): result = self.org.getOrganisationInformation() self.assertIsNotNone( result, 'JSON was empty' ) def test_org_02_getBoards( self ): for board in self.org.getBoards(): self.assertIsNotNone( board.id, msg = "ID has not been provided" ) self.assertIsNotNone( board.name, msg = "Name has not been provided" ) def test_org_03_getMembers( self ): for member in self.org.getMembers(): self.assertIsNotNone( member.id, msg = "ID has not been provided" ) self.assertIsNotNone( member.name, msg = "Name has not been provided" ) def test_org_04_updateOrganisation( self ): description = str( uuid.uuid1() ) new_organisation = self.org.updateOrganisation( { 'desc': description } ) new_description = new_organisation.getOrganisationInformation()['desc'] self.assertEqual( description, new_description, msg = "Descriptions don't match. Update Organisation didn't work!" ) def test_boa_01_getBoardInformation( self ): result = self.board.getBoardInformation() self.assertIsNotNone( result, 'JSON was empty' ) def test_boa_02_getLists( self ): for lis in self.board.getLists(): self.assertIsNotNone( lis.id, msg = "ID has not been provided" ) self.assertIsNotNone( lis.name, msg = "Name has not been provided" ) def test_boa_03_getCards( self ): for card in self.board.getCards(): self.assertIsNotNone( card.id, msg = "ID has not been provided" ) self.assertIsNotNone( card.name, msg = "Name has not been provided" ) def test_boa_04_getCard( self ): card = self.board.getCard( card_id ) self.assertIsNotNone( card.id, msg = "ID has not been provided" ) self.assertIsNotNone( card.name, msg = "Name has not been provided" ) def test_boa_05_getMembers( self ): for member in self.board.getMembers(): self.assertIsNotNone( member.id, msg = "ID has not been provided" ) self.assertIsNotNone( member.name, msg = "Name has not been provided" ) def test_boa_06_getOrganisation( self ): organisation = self.board.getOrganisation() self.assertIsNotNone( organisation.id, msg = "ID has not been provided" ) self.assertIsNotNone( organisation.name, msg = "Name has not been provided" ) def test_boa_07_updateBoard( self ): description = str( uuid.uuid1() ) new_board = self.board.updateBoard( { 'desc': description } ) new_description = new_board.getBoardInformation()['desc'] self.assertEqual( description, new_description, msg = "Descriptions don't match. Update Board didn't work!" ) def test_boa_08_addList( self ): name = str( uuid.uuid1() ) new_list = self.board.addList( { 'name': name } ) new_list_name = new_list.name self.assertEqual( name, new_list_name, msg = "Names don't match. Add list didn't work!" ) def test_lis_01_getListInformation( self ): result = self.list.getListInformation() self.assertIsNotNone( result, 'JSON was empty' ) def test_lis_02_getBoard( self ): board = self.list.getBoard() self.assertIsNotNone( board.id, msg = "ID has not been provided" ) self.assertIsNotNone( board.name, msg = "Name has not been provided" ) def test_lis_03_getCards( self ): for card in self.list.getCards(): self.assertIsNotNone( card.id, msg = "ID has not been provided" ) self.assertIsNotNone( card.name, msg = "Name has not been provided" ) def test_lis_04_updateList( self ): name = str( uuid.uuid1() ) new_list = self.list.updateList( { 'name': name } ) new_list_name = new_list.name self.assertEqual( name, new_list_name, msg = "Names don't match. Update list didn't work!" ) def test_lis_05_addCard( self ): name = str( uuid.uuid1() ) new_card = self.list.addCard( { 'name': name } ) new_card_name = new_card.name self.assertEqual( name, new_card_name, msg = "Names don't match. Add card didn't work!" ) def test_car_01_getCardInformation( self ): result = self.card.getCardInformation() self.assertIsNotNone( result, 'JSON was empty' ) def test_car_02_getBoard( self ): board = self.card.getBoard() self.assertIsNotNone( board.id, msg = "ID has not been provided" ) self.assertIsNotNone( board.name, msg = "Name has not been provided" ) def test_car_03_getList( self ): lis = self.card.getList() self.assertIsNotNone( lis.id, msg = "ID has not been provided" ) self.assertIsNotNone( lis.name, msg = "Name has not been provided" ) def test_car_04_getChecklists( self ): for checklist in self.card.getChecklists(): self.assertIsNotNone( checklist.id, msg = "ID has not been provided" ) self.assertIsNotNone( checklist.name, msg = "Name has not been provided" ) def test_car_05_getMembers( self ): for member in self.card.getMembers(): self.assertIsNotNone( member.id, msg = "ID has not been provided" ) self.assertIsNotNone( member.name, msg = "Name has not been provided" ) def test_car_06_updateCard( self ): description = str( uuid.uuid1() ) new_card = self.card.updateCard( { 'desc': description } ) new_description = new_card.getCardInformation()['desc'] self.assertEqual( description, new_description, msg = "Descriptions don't match. Update Card didn't work!" ) def test_car_07_addComments( self ): comment = str( uuid.uuid1() ) result = self.card.addComments( comment ) new_comment = result['data']['text'] self.assertEqual( comment, new_comment, msg = "Comments don't match. Add comment didn't work!" ) def test_car_08_addAttachment( self ): f = open( 'test/test.txt', 'r' ).read() result = self.card.addAttachment( 'text.txt', f ) self.assertIsNotNone( result, "Got nothing back, doesn't look like it worked!" ) def test_car_09_addChecklists( self ): name = str( uuid.uuid1() ) new_checklist = self.card.addChecklists( { 'name': name } ) new_checklist_name = new_checklist.name self.assertEqual( name, new_checklist_name, "Names don't match. Add Checklist failed!" ) def test_car_10_addLabels( self ): try: label_colour = 'green' result = self.card.addLabels( { 'value': label_colour } ) found_label = False for label in result: if label['color'] == label_colour: found_label = True self.assertTrue( found_label, "Label wasn't added!" ) except ResourceUnavailable: # Label already added pass def test_car_11_addMember( self ): try: result = self.card.addMember( member_id ) found_member = False for member in result: if member.id == member_id: found_member = True self.assertTrue( found_member, "Member wasn't added to card!" ) except ResourceUnavailable: # Member is already on the card pass def test_car_12_removeMember( self ): try: result = self.card.removeMember( member_id ) self.assertIsNotNone( result, "JSON failure! Nothing was returned" ) for member in result: self.assertNotEqual( member['id'], member_id, "Member was not removed!" ) except ResourceUnavailable: # Member isn't attached to card pass def test_che_01_getChecklistInformation( self ): result = self.checklist.getChecklistInformation() self.assertIsNotNone( result, 'JSON was empty' ) def test_che_02_getItems( self ): result = self.checklist.getItems() self.assertIsNotNone( result, 'JSON was empty' ) def test_che_03_updateChecklist( self ): name = str( uuid.uuid1() ) new_checklist = self.checklist.updateChecklist( name ) new_name = new_checklist.name self.assertEqual( name, new_name, msg = "Names don't match. Update didn't work!" ) def test_che_04_addItem( self ): name = str( uuid.uuid1() ) result = self.checklist.addItem( {'name': name } ) new_item_name = result[ len( result ) - 1 ]['name'] self.assertEqual( name, new_item_name, "Names don't match! Add item failed" ) def test_che_05_removeItem( self ): items = self.checklist.getItems() if len( items ) > 0: item_id = items[0]['id'] result = self.checklist.removeItem( item_id ) self.assertIsNotNone( result, "JSON was empty!" ) def test_mem_01_getMemberInformation( self ): result = self.member.getMemberInformation() self.assertIsNotNone( result, 'JSON was empty' ) def test_mem_02_getBoards( self ): for board in self.member.getBoards(): self.assertIsNotNone( board.id, msg = "ID has not been provided" ) self.assertIsNotNone( board.name, msg = "Name has not been provided" ) def test_mem_03_getCards( self ): for cards in self.member.getCards(): self.assertIsNotNone( cards.id, msg = "ID has not been provided" ) self.assertIsNotNone( cards.name, msg = "Name has not been provided" )