diff --git a/test_rebuild.py b/test_rebuild.py index 954f49f..edfeeba 100644 --- a/test_rebuild.py +++ b/test_rebuild.py @@ -1,6 +1,6 @@ from sqlalchemy import create_engine, func from sqlalchemy.orm import sessionmaker -from models import SystemData, ActiveTable, ConsumedTable, TransferLogs, TransactionHistory, RejectedTransactionHistory, Base, ContractStructure, ContractBase, ContractParticipants, SystemBase, ActiveContracts, ContractAddressMapping, LatestCacheBase, ContractTransactionHistory, RejectedContractTransactionHistory, TokenContractAssociation, ContinuosContractBase, ContractStructure1, ContractParticipants1, ContractDeposits1, ContractTransactionHistory1, LatestCacheBase, LatestTransactions, LatestBlocks +from models import SystemData, ActiveTable, ConsumedTable, TransferLogs, TransactionHistory, RejectedTransactionHistory, Base, ContractStructure, ContractBase, ContractParticipants, SystemBase, ActiveContracts, ContractAddressMapping, LatestCacheBase, ContractTransactionHistory, RejectedContractTransactionHistory, TokenContractAssociation, ContinuosContractBase, ContractStructure1, ContractParticipants1, ContractDeposits1, ContractTransactionHistory1, LatestTransactions, LatestBlocks, DatabaseAddressMapping import json from tracktokens_smartcontracts import processTransaction import os diff --git a/tracktokens_smartcontracts.py b/tracktokens_smartcontracts.py index 8dbb104..d7bbc50 100755 --- a/tracktokens_smartcontracts.py +++ b/tracktokens_smartcontracts.py @@ -251,16 +251,16 @@ def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress, consumedpid_string = consumedpid_string[:-1] # Make new entry - receiverAddress_details = session.query(ActiveTable).filter_by(address=outputAddress).order_by(ActiveTable.id.desc()).first() - senderAddress_details = session.query(ActiveTable).filter_by(address=inputAddress).order_by(ActiveTable.id.desc()).first() + receiverAddress_details = session.query(ActiveTable).filter(ActiveTable.address==outputAddress, ActiveTable.addressBalance!=None).order_by(ActiveTable.id.desc()).first() if receiverAddress_details is None: addressBalance = commentTransferAmount else: addressBalance = receiverAddress_details.addressBalance + commentTransferAmount receiverAddress_details.addressBalance = None - session.add(ActiveTable(address=outputAddress, consumedpid=str(piddict), transferBalance=commentTransferAmount, addressBalance = addressBalance)) - senderAddress_details.addressBalance = senderAddress_details.addressBalance - commentTransferAmount + + senderAddress_details = session.query(ActiveTable).filter_by(address=inputAddress).order_by(ActiveTable.id.desc()).first() + senderAddress_details.addressBalance = senderAddress_details.addressBalance - commentTransferAmount # Migration # shift pid of used utxos from active to consumed @@ -307,15 +307,15 @@ def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress, consumedpid_string = consumedpid_string[:-1] # Make new entry - receiverAddress_details = session.query(ActiveTable).filter_by(address=outputAddress).order_by(ActiveTable.id.desc()).first() - senderAddress_details = session.query(ActiveTable).filter_by(address=inputAddress).order_by(ActiveTable.id.desc()).first() + receiverAddress_details = session.query(ActiveTable).filter(ActiveTable.address==outputAddress, ActiveTable.addressBalance!=None).order_by(ActiveTable.id.desc()).first() if receiverAddress_details is None: addressBalance = commentTransferAmount else: - addressBalance = receiverAddress_details.addressBalance + commentTransferAmount + addressBalance = receiverAddress_details.addressBalance + commentTransferAmount receiverAddress_details.addressBalance = None - session.add(ActiveTable(address=outputAddress, consumedpid=str(piddict), transferBalance=commentTransferAmount, addressBalance = addressBalance)) + + senderAddress_details = session.query(ActiveTable).filter_by(address=inputAddress).order_by(ActiveTable.id.desc()).first() senderAddress_details.addressBalance = senderAddress_details.addressBalance - commentTransferAmount # Migration