コード例 #1
0
ファイル: coinaccount.py プロジェクト: walletcoin/mybitbank
    def listTransactions(self,
                         limit=100000,
                         start=0,
                         orderby='time',
                         reverse=True):
        '''
        Get a list of transactions by account name and provider_id
        '''

        cache_hash = self.getParamHash(
            "limit=%s&start=%sorderby=%s&reverse=%s" %
            (limit, start, orderby, reverse))
        cached_object = self._cache.fetch('transactions', cache_hash)
        if cached_object:
            return cached_object

        transactions = []
        transaction_list = connector.listTransactionsByAccount(
            self['name'], self['provider_id'], limit, start)

        for entry in transaction_list:
            if entry.get('address', False):
                entry['address'] = CoinAddress(entry['address'], self)

            # give out a provider id and a currency code to the transaction dict
            entry['provider_id'] = self.provider_id
            entry['currency'] = self['currency']

            if entry['category'] == 'receive':
                entry['source_address'] = CoinAddress(
                    entry.get('details', {}).get('sender_address', False),
                    "This is a sender address!")
            elif entry['category'] == 'send':
                entry['source_addresses'] = self[
                    'wallet'].getAddressesByAccount(entry['account'])

            entry['wallet'] = self['wallet']

            coin_transaction = CoinTransaction(entry)
            transactions.append(coin_transaction)

        # sort result
        transactions = sorted(transactions,
                              key=lambda transaction: transaction[orderby],
                              reverse=reverse)

        # cache the result
        self._cache.store('transactions', cache_hash, transactions)
        return transactions
コード例 #2
0
    def __getitem__(self, key):
        '''
        Getter for dictionary-line behavior
        '''
        if key == "account":
            if self.haskey("account"):
                return self._transaction['account']
            else:
                return self._transaction['details'][0]['account']
        elif key == "category":
            if self.haskey("category"):
                return self._transaction['category']
            else:
                return self._transaction['details'][0]['category']
        elif key == "currency_symbol":
            return self.getCurrencySymbol()
        elif key == "currency_code":
            return self.getCurrencyCode()
        elif key == "raw_transaction":
            return self.getRawTransaction()
        elif key == "source_address":
            return self.getSenderAddress()
        elif key == "address":
            return CoinAddress(self._transaction['address'],
                               self._transaction['account'])

        transaction = getattr(self, '_transaction')
        return transaction.get(key, None)
コード例 #3
0
 def getSenderAddress(self):
     '''
     Getter function for the sender address
     '''
     if self['category'] == 'receive':
         meta_properties = self.metaProperties()
         if meta_properties.get('sender_address', False):
             return CoinAddress(meta_properties['sender_address'], 'This is a sender address!')
         
     return None
コード例 #4
0
ファイル: coinwallet.py プロジェクト: thirdkiller/mybitbank
    def getAddressesByAccount(self, account):
        '''
        Get a list of address for account
        '''
        addresses_list = connector.getAddressesByAccount(
            account, self.provider_id)
        coinaddresses = []
        for address in addresses_list:
            coinaddresses.append(CoinAddress(address, account))

        return coinaddresses
コード例 #5
0
ファイル: coinaccount.py プロジェクト: walletcoin/mybitbank
    def getAddresses(self):
        '''
        Get the address for an account name
        '''
        # check for cached data, use that or get it again
        cache_hash = self.getParamHash("name=%s" % (self['name']))
        cached_object = self._cache.fetch('addressesbyaccount', cache_hash)
        if cached_object:
            return cached_object

        addresses = connector.getAddressesByAccount(self['name'],
                                                    self.provider_id)
        addresses_list = []
        for address in addresses:
            coinaddr = CoinAddress(address, self)
            addresses_list.append(coinaddr)

        # cache the result
        self._cache.store('addressesbyaccount', cache_hash, addresses_list)
        return addresses_list