def applyToLoadedFiles(dirpath,pattern,funToApply,maximumToLoad = ppApiConfig.LIMIT_NUM_MATCHING_TRANSACTIONS,version_adapter_map = VERSION_ADAPTER_MAP): print "maximumToLoad "+ str(maximumToLoad) onlyfiles = [ f for f in listdir(dirpath) if isfile(join(dirpath,f)) ] onlycsvfiles = [ f for f in onlyfiles if re.search(".csv$",f)] for filename in onlycsvfiles: transactions = [] print filename if len(transactions) > maximumToLoad: print "WEIRD!" break version = Transaction.parseFormatVersion(filename) if not version: logger.error('File in wrong format: '+dirpath+filename) print 'File in wrong format: '+dirpath+filename else: # RevAuc data has number 1 # This would be better with a functional "cond" type operator adapter = None logger.info('version:'+version) print 'version:'+version if (version in version_adapter_map): v = version_adapter_map[version] loader = v[0] adapter = v[1] transactions.extend(loader(dirpath+"/"+filename,\ pattern, adapter,maximumToLoad)) logger.info('Total Number Transactions Read From File'+filename \ +str(len(transactions))) funToApply(filename,transactions) else: logger.error('Unknown version') raise Exception('Unknown Format Version')
def loadDirectory(dirpath,pattern,version_adapter_map = VERSION_ADAPTER_MAP): onlyfiles = [ f for f in listdir(dirpath) if isfile(join(dirpath,f)) ] transactions = [] onlycsvfiles = [ f for f in onlyfiles if re.search(".csv$",f)] for filename in onlycsvfiles: print filename if len(transactions) > ppApiConfig.LIMIT_NUM_MATCHING_TRANSACTIONS: break version = Transaction.parseFormatVersion(filename) if not version: logger.error('File in wrong format: '+dirpath+filename) print 'File in wrong format: '+dirpath+filename else: # RevAuc data has number 1 # This would be better with a functional "cond" type operator adapter = None logger.info('version:'+version) if (version in version_adapter_map): v = version_adapter_map[version] loader = v[0] adapter = v[1] transactions.extend(loader(dirpath+"/"+filename,\ pattern, adapter,ppApiConfig.LIMIT_NUM_MATCHING_TRANSACTIONS)) else: logger.error('Unknown version') raise Exception('Unknown Format Version') logger.info('Total Number Transactions Read From Directory' \ +str(len(transactions))) return transactions
def unloadTransact(self): transactList=[] while True: rowSet=self.fetchone() if rowSet is None: break else: rowSet=list(rowSet) transact=Transaction(self.auth, self.cache) for columnName in self.description: attributeValue=rowSet.pop(0) setattr(transact, columnName[0], attributeValue) if hasattr(transact,"category_id") and transact.category_id != '': transact.category_id=self.session.getCategoryFromName(transact.category_id).id else: transact.category_id=None if hasattr(transact,"account_id") and transact.account_id != '': transact.account_id=self.session.getAccountFromName(transact.account_id).id else: transact.account_id=None if hasattr(transact,"id"): transact.onCommit="modify" else: transact.onCommit="abort" transactList.append(transact) return tuple(transactList)
def createTransact(self, date, amount, transaction_type, account, category, description): if category is None: category_id=0 elif type(category) == int: category_id=category else: category_id=self.getCategoryByName(category).id if account is None: account_id=0 elif type(account) == int: account_id=account else: account_id=self.getAccountByName(account).id transact=Transaction(self.auth, self.cache, {"date":date,"transaction_type":transaction_type,\ "account_id":account_id,"category_id":category_id,"amount":amount,"description":description}) transact.onCommit="create" return transact
def pos_cycle(self): myPCTracer = self.PCTracer_ptr # for VLC input PClist check if (myPCTracer.PCpointer >= len(myPCTracer.PClist)): return ### find the "WAITTING" one in outsdnglist, make a transaction for ioutsdnglist in range(self.getCfgByName("outsdng")): if(self.outsdnglist[ioutsdnglist].state == Request.isRequestState("WAIT")): assert(not self.node_ptr.node_lower_bus == "None"), ("%s node_lower_bus = %s" %(self.node_ptr.node_name, self.node_ptr.node_lower_bus)) ### mark this req in outsdnglist as OUTSTANDING state ### self.outsdnglist[ioutsdnglist].state = Request.isRequestState("OUTSTANDING") ### turn req to a new transaction ### tmp_transaction = Transaction() tmp_transaction.source_node = self.node_ptr tmp_transaction.destination_list.append(GlobalVar.topology_ptr.node_dist[self.node_ptr.node_lower_node]) tmp_transaction.duration_list.append(self.node_ptr) tmp_transaction.source_req = self.outsdnglist[ioutsdnglist] tmp_transaction.subblockaddr = self.outsdnglist[ioutsdnglist].subblockaddr self.node_ptr.node_port_dist[self.node_ptr.node_name + "_" + self.node_ptr.node_lower_bus ].port_NB_trans.append(tmp_transaction)
def main(): block = Block() transaction = Transaction() block_user = User() running = True user_id = block_user.sign_in() while running: if user_id < 11: print("You are an admin. Welcome to the admin page") break else: print("Welcome to the main menu") print("1) Create a transaction") print("2) Check on the blockchain") print("3) look at my account") print("Enter the number or word associated with what you want to do " "(i.e. transaction, blockchain, or account") print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n") us_input = input("What would you like to do: ") us_input = us_input.lower() if us_input == "exit" or us_input == "done": running = False elif us_input == "1" or us_input == "transaction": transaction.candidate_list() print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") elif us_input == "2" or us_input == "blockchain": block.block_size() print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") elif us_input == "3" or us_input == "account": block_user.handshake() print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") else: print("Please enter a valid input") print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") print("Byebye")
def applyToLoadedFiles(actualinputfile,dirpath,pattern,funToApply,maximumToLoad = ppApiConfig.LIMIT_NUM_MATCHING_TRANSACTIONS,version_adapter_map = VERSION_ADAPTER_MAP): import os print "maximumToLoad "+ str(maximumToLoad) onlyfiles = [ f for f in listdir(dirpath) if isfile(join(dirpath,f)) ] onlycsvfiles = [ f for f in onlyfiles if re.search(".csv$",f)] firsttime = True import time for filename in onlycsvfiles: transactions = [] print 'Processing filename =', filename #This creates a error file for each feeed and not for each part file curr_time = time.strftime("%Y-%m-%d-%H-%M-%S") errorfile_name = "../error/errorfile-"+filename+'-'+curr_time errorfile = open(errorfile_name,"w") firsttime = False if len(transactions) > maximumToLoad: print "WEIRD!" break version = Transaction.parseFormatVersion(filename) if not version: logger.error('File in wrong format: '+dirpath+'/'+filename) print 'File in wrong format: '+dirpath+'/'+filename else: # RevAuc data has number 1 # This would be better with a functional "cond" type operator adapter = None logger.info('version:'+version) print 'version:'+version if (version in version_adapter_map): v = version_adapter_map[version] loader = v[0] adapter = v[1] transactions.extend(loader(dirpath+"/"+filename,\ pattern, adapter,maximumToLoad,errorfile)) logger.info('Total Number Transactions Read From File'+filename \ +str(len(transactions))) funToApply(filename,transactions) processerrorfile(errorfile_name,dirpath, filename) else: logger.error('Unknown version') raise Exception('Unknown Format Version') if not firsttime: errorfile.close() archiveinputfile(actualinputfile)
if __name__=="__main__": for year in range(2012,2011,-1):#2013,1999,-1 for PEAKDURATION in peakdurations: global PEAKDURATION for PEAKINCREMENT in peakincrements: global PEAKINCREMENT for INSURANCEDURATION in insurancedurations: global INSURANCEDURATION if year<2015: #or PEAKINCREMENT > 1.2 and PEAKDURATION==18: print "Progress... ",year,PEAKDURATION,PEAKINCREMENT,INSURANCEDURATION for INSURANCEINCREMENT in insuranceincrements: global INSURANCEINCREMENT for SPLITFILTER in splitfilter: global SPLITFILTER for exchange in ["NASDAQ","NYSE","OTCBB","AMEX"]:#"NASDAQ","NYSE","OTCBB","AMEX" T=Transaction() T.INSURANCEINCREMENT=INSURANCEINCREMENT T.stoplimits=stoplimits T.earninglimits=earninglimits T.constructTransactionContainer() for i in xrange(66,67):#65,91 allstocks=getListAllStocks(i,exchange) for idx,stock in enumerate(allstocks): #print stock[1] if stock[1]=="BKESY": #debug condition symbol=stock[1] dates,highs,lows,prices,volume=getStock(symbol,exchange,year) #for a,b,c,d,e in zip(dates,highs,lows,prices,volume): #print a,b,c,d,e if size(dates)!=0:
def execute(self, response, client_connection, args): response["type"] = 'create_transaction' try: source = args['source'] recipient = args['recipient'] if ',' in args['amount']: args['amount'] = args['amount'].replace(',','.') try: amount = decimal.Decimal(args['amount']) except: response["error"] = "Invalid amount, unable to parse" return signature = args['signature'] sign_digest = bytes.fromhex(signature) source_wallet = self.database.get_wallet_by_id(source) recipient_wallet = self.database.get_wallet_by_id(recipient) if source_wallet is None: # invalid source remote_ip = client_connection.get_remote_ip() response["error"] = "Source and/or recipient wallet invalid" print("Invalid transaction (invalid source) tentative from ({0})".format(remote_ip)) return signer = PKCS1_v1_5.new(RSA.importKey(source_wallet.key)) # checking the signature message = "{0},{1},{2:.5f}".format(source, recipient, amount) hasher = SHA256.new() hasher.update(message.encode('ascii')) if not signer.verify(hasher, sign_digest): print("Invalid signature from {0}".format(source)) response["error"] = "Invalid signature" return if recipient_wallet is None or source_wallet is None: # invalid recipient remote_ip = client_connection.get_remote_ip() response["error"] = "Source and/or recipient wallet invalid" print("Invalid transaction (invalid recipient) tentative from ({0})".format(remote_ip)) return # amount is in balance or amount too low if source_wallet.balance < amount or amount < self.min_transaction_amount: remote_ip = client_connection.get_remote_ip() print("Invalid transaction (not enough funds) tentative from ({0})".format(remote_ip)) response["error"] = "Not enough coins" return # Just in case... if recipient_wallet.id == source_wallet.id: remote_ip = client_connection.get_remote_ip() print("Invalid transaction (same wallet) tentative from ({0})".format(remote_ip)) response["error"] = "Source and recipient are the same wallet" return # completing transaction source_wallet.balance -= amount recipient_wallet.balance += amount self.database.update_wallet_balance(source_wallet) self.database.update_wallet_balance(recipient_wallet) txn = Transaction.Transaction(0, source_wallet.id, recipient_wallet.id, amount) txn.signature = signature self.database.create_transaction(txn) response['id'] = txn.id except KeyError as e: response["error"] = "Missing argument(s)" except Exception as e: print("{0} exception : {1}".format(self.__class__, e))