def client(self):
     if self._client:
         return self._client
     client = Client(TrelloUpdater.APP_KEY, self.token)
     data = client.fetchJson('/members/me')
     sys.stderr.write('token found to be valid for user %s\n' % data['username'])
     self._client = client
     return client
Exemple #2
0
 def test_token(self):
     self._client = Client(TrelloUpdater.APP_KEY, self.token)
     try:
         data = self._client.fetchJson('/members/me')
         sys.stderr.write('token found to be valid for user %s\n' %
                          data['username'])
     except trolly.Unauthorised:
         self.client
Exemple #3
0
 def client(self):
     if self._client:
         return self._client
     client = Client(TrelloUpdater.APP_KEY, self.token)
     data = client.fetchJson('/members/me')
     sys.stderr.write('token found to be valid for user %s\n' %
                      data['username'])
     self._client = client
     return client
 def test_token(self):
     self._client = Client(TrelloUpdater.APP_KEY, self.token)
     try:
         data = self._client.fetchJson('/members/me')
         sys.stderr.write('token found to be valid for user %s\n' % data['username'])
     except trolly.Unauthorised:
         self.client
Exemple #5
0
 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 create_user(self, user_auth_token):
		"""
		Initiates trello client for the user and also stores list of
		open boards for the user and stores locally as instance variable.
		"""
		self.trello_client = Client(self.api_key, user_auth_token)
		member = Member(self.trello_client, 'me')
		self.get_open_boards(member)
Exemple #7
0
 def __init__(self, trConfig):
     super(TrelloClient, self).__init__()
     self.trConfig = trConfig
     self.trClient = Client(self.trConfig['key'], self.trConfig['token'])
     self.org = Organisation(self.trClient, self.trConfig['orgid'])
     self.getBoards(self.trConfig['boards'].keys())
class TrelloUpdater(object):

    APP_KEY = '10533337e4b5778c1c356c39dd3c79e9'
    AUTH_URL = "https://trello.com/1/authorize?key=" + APP_KEY + "&name=trello-card-updater&response_type=token&scope=read,write"

    def __init__(self, filename=os.path.expanduser('~/.trelloupdate')):
        self.filename = filename
        self._board_id = None
        self._card_names_and_ids = []
        self._client = None
        self._token = None

    def clear_cache(self):
        self.save_key('board_id', None)
        self.save_key('token', None)
        self.save_key('card_names_and_ids', [])
        sys.exit(0) # in memory caches don't match disc cache, so die to kill the memory cache

    def save_key(self, key, value):
        try:
            with open(self.filename, 'r') as f:
                data = json.load(f)
        except IOError:
            data = {}
        if key == 'card_names_and_ids':
            data[key] = [(card[0].encode('rot13'), card[1]) for card in value]
        else:
            data[key] = value
        try:
            with open(self.filename, 'w') as f:
                json.dump(data, f)
        except IOError:
            sys.stderr.write('Error saving data to %r\n' % self.filename)
            # to allow platforms that can't save, just disable this next line
            raise

    def load_key(self, key):
        try:
            with open(self.filename, 'r') as f:
                data = json.load(f)
        except IOError:
            data = {}
        if key == 'card_names_and_ids':
            # ROT13 encoded so names of cards don't get indexed
            return [(card[0].decode('rot13'), card[1]) for card in data.get(key, [])]
        else:
            return data.get(key, None)

    @property
    @cached_accessor
    @retry_on_bad_auth
    def board_id(self):
        board_id = self.ask_for_board_id()
        Board(self.client, board_id).getBoardInformation() # raises errors if bad board id
        return board_id

    def ask_for_board_id(self):
        """Factored out in case interface isn't keyboard"""
        board_id = raw_input("paste in board id or url: ").strip()
        m = re.search(r"(?:https?://)?(?:trello.com)?/?b?/?([a-zA-Z]{8})/(?:.*)", board_id)
        if m:
            board_id = m.group(1)
        return board_id

    @property
    @cached_accessor
    def token(self):
        webbrowser.open(TrelloUpdater.AUTH_URL)
        token = raw_input("paste in token: ").strip()
        return token

    @property
    @cached_accessor
    @retry_on_bad_auth
    def card_names_and_ids(self):
        """Returns [(name, id), ...] pairs of cards from current board"""
        b = Board(self.client, self.board_id)
        cards = b.getCards()
        card_names_and_ids = [(unidecode(c.name.decode('utf8')), c.id) for c in cards]
        return card_names_and_ids

    @property
    @retry_on_bad_auth
    def client(self):
        if self._client:
            return self._client
        client = Client(TrelloUpdater.APP_KEY, self.token)
        data = client.fetchJson('/members/me')
        sys.stderr.write('token found to be valid for user %s\n' % data['username'])
        self._client = client
        return client

    @property
    @cached_accessor('card_names_and_ids')
    def cached_card_names_and_ids(self):
        return []

    @retry_on_bad_auth
    def add_comment_to_card(self, card_id, comment, move_to_bottom=False):
        c = Card(self.client, card_id)
        c.addComments(comment)
        sys.stderr.write('card comment added\n')
        if move_to_bottom:
            c.updateCard({'pos':'bottom'})
            sys.stderr.write('card moved to bottom of list\n')

    def set_board(self):
        old_board_id = self._board_id or self.load_key('board_id')
        if old_board_id:
            sys.stderr.write('current board id: %s, https://trello.com/b/%s\n' % (old_board_id, old_board_id))
        else:
            sys.stderr.write('no board currently selected\n')
        try:
            self._board_id = None
            self.save_key('board_id', None)
            self.save_key('card_names_and_ids', [])
            self.board_id
        except KeyboardInterrupt:
            self._board_id = old_board_id
            self.save_key('board_id', old_board_id)
            sys.stderr.write('\n')
            sys.exit(1)
        sys.stderr.write('board id set\n')

    def test_token(self):
        self._client = Client(TrelloUpdater.APP_KEY, self.token)
        try:
            data = self._client.fetchJson('/members/me')
            sys.stderr.write('token found to be valid for user %s\n' % data['username'])
        except trolly.Unauthorised:
            self.client

    def generate_token(self):
        self._client = None
        self._token = None
        self.save_key('token', None)
        self.client
Exemple #9
0
class TrelloUpdater(object):

    APP_KEY = '10533337e4b5778c1c356c39dd3c79e9'
    AUTH_URL = "https://trello.com/1/authorize?key=" + APP_KEY + "&name=trello-card-updater&response_type=token&scope=read,write"

    def __init__(self, filename=os.path.expanduser('~/.trelloupdate')):
        self.filename = filename
        self._board_id = None
        self._card_names_and_ids = []
        self._client = None
        self._token = None

    def clear_cache(self):
        self.save_key('board_id', None)
        self.save_key('token', None)
        self.save_key('card_names_and_ids', [])
        sys.exit(
            0
        )  # in memory caches don't match disc cache, so die to kill the memory cache

    def save_key(self, key, value):
        try:
            with open(self.filename, 'r') as f:
                data = json.load(f)
        except IOError:
            data = {}
        if key == 'card_names_and_ids':
            data[key] = [(card[0].encode('rot13'), card[1]) for card in value]
        else:
            data[key] = value
        try:
            with open(self.filename, 'w') as f:
                json.dump(data, f)
        except IOError:
            sys.stderr.write('Error saving data to %r\n' % self.filename)
            # to allow platforms that can't save, just disable this next line
            raise

    def load_key(self, key):
        try:
            with open(self.filename, 'r') as f:
                data = json.load(f)
        except IOError:
            data = {}
        if key == 'card_names_and_ids':
            # ROT13 encoded so names of cards don't get indexed
            return [(card[0].decode('rot13'), card[1])
                    for card in data.get(key, [])]
        else:
            return data.get(key, None)

    @property
    @cached_accessor
    @retry_on_bad_auth
    def board_id(self):
        board_id = self.ask_for_board_id()
        Board(self.client,
              board_id).getBoardInformation()  # raises errors if bad board id
        return board_id

    def ask_for_board_id(self):
        """Factored out in case interface isn't keyboard"""
        board_id = raw_input("paste in board id or url: ").strip()
        m = re.search(
            r"(?:https?://)?(?:trello.com)?/?b?/?([a-zA-Z]{8})/(?:.*)",
            board_id)
        if m:
            board_id = m.group(1)
        return board_id

    @property
    @cached_accessor
    def token(self):
        webbrowser.open(TrelloUpdater.AUTH_URL)
        token = raw_input("paste in token: ").strip()
        return token

    @property
    @cached_accessor
    @retry_on_bad_auth
    def card_names_and_ids(self):
        """Returns [(name, id), ...] pairs of cards from current board"""
        b = Board(self.client, self.board_id)
        cards = b.getCards()
        card_names_and_ids = [(unidecode(c.name), c.id) for c in cards]
        return card_names_and_ids

    @property
    @retry_on_bad_auth
    def client(self):
        if self._client:
            return self._client
        client = Client(TrelloUpdater.APP_KEY, self.token)
        data = client.fetchJson('/members/me')
        sys.stderr.write('token found to be valid for user %s\n' %
                         data['username'])
        self._client = client
        return client

    @property
    @cached_accessor('card_names_and_ids')
    def cached_card_names_and_ids(self):
        return []

    @retry_on_bad_auth
    def add_comment_to_card(self, card_id, comment, move_to_bottom=False):
        c = Card(self.client, card_id)
        c.addComments(comment)
        sys.stderr.write('card comment added\n')
        if move_to_bottom:
            c.updateCard({'pos': 'bottom'})
            sys.stderr.write('card moved to bottom of list\n')

    def set_board(self):
        old_board_id = self._board_id or self.load_key('board_id')
        if old_board_id:
            sys.stderr.write(
                'current board id: %s, https://trello.com/b/%s\n' %
                (old_board_id, old_board_id))
        else:
            sys.stderr.write('no board currently selected\n')
        try:
            self._board_id = None
            self.save_key('board_id', None)
            self.save_key('card_names_and_ids', [])
            self.board_id
        except KeyboardInterrupt:
            self._board_id = old_board_id
            self.save_key('board_id', old_board_id)
            sys.stderr.write('\n')
            sys.exit(1)
        sys.stderr.write('board id set\n')

    def test_token(self):
        self._client = Client(TrelloUpdater.APP_KEY, self.token)
        try:
            data = self._client.fetchJson('/members/me')
            sys.stderr.write('token found to be valid for user %s\n' %
                             data['username'])
        except trolly.Unauthorised:
            self.client

    def generate_token(self):
        self._client = None
        self._token = None
        self.save_key('token', None)
        self.client
Exemple #10
0
 def __init__(self, apiKey, userAuthToken):
     Client.__init__(self, apiKey, userAuthToken)
Exemple #11
0
    configFile = open(options.config, "r").read()
    configSpecs = open("options.schema.json").read()
    specs = json.loads(configSpecs)
    config = json.loads(configFile)
    configstatus = validate_options(specs, config)
except IOError as e:
    log(0, "error opening config file " +str(e))
    exit(1)

if not configstatus['status'] == "valid":
    log(0, "error, config not valid: " + str(configstatus))

defaultCardFields = config['fields']
lists = config['lists']

trello = Client(config['apikey'], config['token'])

result = {}

for list in lists:
    if 'cardFields' in list:
        cardFields = list['cardFields']
    else:
        cardFields = defaultCardFields

    cardParams = {}
    listResult = {}
    myList = trello.get_list(list['id'])
    myListInfo = myList.get_list_information()
    listResult['id'] = list['id']
    listResult['cards'] = []
Exemple #12
0
 def __init__(self, apiKey, userAuthToken):
     Client.__init__(self, apiKey, userAuthToken )
Exemple #13
0
 def __init__(self):
     #self.conn = TrelloConnection('3dd167f33e6de7d4f13fcd138346210c', 'ba57d7a637f46d664b8e30a0d8f50642c55c117dadf23cf7c699c51be5e36cbd')
     self.client = Client(api_key=os.getenv('TRELLO_APP_KEY'),
                          user_auth_token=os.getenv('TRELLO_OAUTH_TOKEN'))
     self.board = Board(self.client, os.getenv('TRELLO_BOARD'))
Exemple #14
0
 def __init__(self):
     self.client = Client(api_key, user_auth_token)
     self.board = Board(self.client, board_id)