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
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)
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
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
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