コード例 #1
0
ファイル: bot.py プロジェクト: ntrepid8/agilebot
    def find_boards(self, board_name=None, lists=None, cards=None, organization_id=None):

        # ensure we have all the configuration required to make a request
        self.check_required_conf()

        # param setup
        p_name = board_name or '*'
        p_filters = ['open']
        p_lists = lists or 'open'
        p_cards = cards or 'open'
        p_organization_id = organization_id or self.conf.organization_id

        resp = self.session.get(
            '{base_url}/members/me/boards'.format(base_url=TRELLO_API_BASE_URL),
            params={
                'lists': p_lists,
                'filter': ', '.join(p_filters)
            }
        )
        util.log_request_response(resp, logger)
        if resp.status_code != requests.codes.ok:
            raise ValueError('http error: {}'.format(resp.status_code))
        boards = resp.json()

        # filter by organization_id
        boards = [b for b in boards if b['idOrganization'] == p_organization_id]

        # filter by name
        boards = [b for b in boards if fnmatch(b['name'], p_name)]

        # deal with cards
        boards = [self.get_board(b['id'], lists=p_lists, cards=p_cards) for b in boards]

        # return the list of boards
        return boards
コード例 #2
0
ファイル: bot.py プロジェクト: ntrepid8/agilebot
    def update_card(self, card_id, data):
        # ensure we have all the configuration required to make a request
        self.check_required_conf()

        # update the card
        resp = self.session.put(
            '{base_url}/cards/{card_id}'.format(base_url=TRELLO_API_BASE_URL, card_id=card_id),
            headers={'Content-Type': 'application/json'},
            data=json.dumps(data)
        )
        util.log_request_response(resp, logger)
        if resp.status_code != requests.codes.ok:
            raise ValueError('http error: {}'.format(resp.status_code))
        return resp.json()
コード例 #3
0
ファイル: bot.py プロジェクト: ntrepid8/agilebot
    def get_board(self, board_id, lists=None, cards=None):

        # ensure we have all the configuration required to make a request
        self.check_required_conf()

        lists = lists or 'open'
        cards = cards or 'open'

        resp = self.session.get(
            '{base_url}/boards/{board_id}'.format(base_url=TRELLO_API_BASE_URL, board_id=board_id),
            params={
                'lists': lists,
                'cards': cards,
                'members': 'all'
            }
        )
        util.log_request_response(resp, logger)
        if resp.status_code != requests.codes.ok:
            raise ValueError('http error: {}'.format(resp.status_code))
        board = resp.json()
        return board
コード例 #4
0
ファイル: bot.py プロジェクト: ntrepid8/agilebot
    def create_board(self, board_name, list_names=None, organization_id=None, members=None):

        # validate board name
        if board_name is None:
            raise ValueError('board_name is required')

        # ensure we have all the configuration required to make a request
        self.check_required_conf()

        # param setup
        p_board_name = board_name
        p_organization_id = organization_id or self.conf.organization_id
        p_list_names = list_names or []
        p_members = members or []

        # check for duplicate names among open boards
        dups = self.find_boards(board_name=p_board_name, organization_id=p_organization_id)
        if dups:
            raise ValueError('duplicate board_name: {}'.format(p_board_name))

        # create the board
        req_body = {
            'name': p_board_name
        }
        if p_organization_id:
            req_body['idOrganization'] = p_organization_id
            req_body['prefs_permissionLevel'] = 'org'
        resp = self.session.post(
            '{base_url}/boards'.format(base_url=TRELLO_API_BASE_URL),
            headers={'Content-Type': 'application/json'},
            data=json.dumps(req_body)
        )
        util.log_request_response(resp, logger)
        if resp.status_code != requests.codes.ok:
            raise ValueError('http error: {}'.format(resp.status_code))
        board = resp.json()

        # get current user
        resp = self.session.get(
            '{base_url}/members/me'.format(base_url=TRELLO_API_BASE_URL)
        )
        util.log_request_response(resp, logger)
        if resp.status_code != requests.codes.ok:
            raise ValueError('http error: {}'.format(resp.status_code))
        current_user = resp.json()

        # add members if any are specified
        p_member_ids = [m['id'] for m in p_members if m['id'] != current_user['id']]
        for m_id in p_member_ids:
            resp = self.session.put(
                '{base_url}/boards/{board_id}/members/{member_id}'.format(
                    base_url=TRELLO_API_BASE_URL,
                    board_id=board['id'],
                    member_id=m_id
                ),
                headers={'Content-Type': 'application/json'},
                data=json.dumps({'idMember': m_id, 'type': 'normal'})
            )
            util.log_request_response(resp, logger)
            if resp.status_code != requests.codes.ok:
                raise ValueError('http error: {}'.format(resp.status_code))

        # if lists are specified, purge the default lists
        if list_names is not None:
            resp = self.session.get(
                '{base_url}/boards/{board_id}/lists'.format(base_url=TRELLO_API_BASE_URL, board_id=board['id'])
            )
            util.log_request_response(resp, logger)
            if resp.status_code != requests.codes.ok:
                raise ValueError('http error: {}'.format(resp.status_code))
            default_lists = resp.json()
            for l in default_lists:
                resp = self.session.put(
                    '{base_url}/lists/{list_id}/closed'.format(base_url=TRELLO_API_BASE_URL, list_id=l['id']),
                    headers={'Content-Type': 'application/json'},
                    data=json.dumps({'value': True})
                )
                util.log_request_response(resp, logger)
                if resp.status_code != requests.codes.ok:
                    raise ValueError('http error: {}'.format(resp.status_code))

        # add any lists specified
        for i, l in enumerate(p_list_names):
            resp = self.session.post(
                '{base_url}/boards/{board_id}/lists'.format(base_url=TRELLO_API_BASE_URL, board_id=board['id']),
                headers={'Content-Type': 'application/json'},
                data=json.dumps({'name': l, 'pos': i + 1})
            )
            util.log_request_response(resp, logger)
            if resp.status_code != requests.codes.ok:
                raise ValueError('http error: {}'.format(resp.status_code))

        # get the full board
        board = self.get_board(board_id=board['id'])

        # success
        return board