smartContractList and tokenSmartContractList returns committee address

This commit is contained in:
RanchiMall Dev 2023-11-14 06:48:38 +00:00
parent 7dd859ec5e
commit 5dfb75417f

View File

@ -19,6 +19,7 @@ import pyflo
from operator import itemgetter from operator import itemgetter
import pdb import pdb
import ast import ast
import time
app = Quart(__name__) app = Quart(__name__)
@ -96,7 +97,7 @@ def transactiondetailhelper(transactionHash):
return transactionJsonData return transactionJsonData
def update_transaction_confirmations(transactionJson): def update_transaction_confirmations(transactionJson):
url = f"{apiUrl}tx/{transactionJson['txid']}" url = f"{apiUrl}api/v1/tx/{transactionJson['txid']}"
response = requests.get(url) response = requests.get(url)
if response.status_code == 200: if response.status_code == 200:
response_data = response.json() response_data = response.json()
@ -122,6 +123,8 @@ def smartcontract_morph_helper(smart_contracts):
if 'oracle_address' in contractStructure.keys(): if 'oracle_address' in contractStructure.keys():
contractDict['oracle_address'] = contractStructure['oracle_address'] contractDict['oracle_address'] = contractStructure['oracle_address']
contractDict['price'] = fetch_dynamic_swap_price(contractStructure, {'time': datetime.now().timestamp()}) contractDict['price'] = fetch_dynamic_swap_price(contractStructure, {'time': datetime.now().timestamp()})
else:
contractDict['price'] = contractStructure['price']
elif contractDict['contractType'] == 'one-time-event': elif contractDict['contractType'] == 'one-time-event':
contractDict['tokenIdentification'] = contract[4] contractDict['tokenIdentification'] = contract[4]
# pull the contract structure # pull the contract structure
@ -276,7 +279,7 @@ def fetch_dynamic_swap_price(contractStructure, blockinfo):
# find the first contract transaction which adheres to price change format # find the first contract transaction which adheres to price change format
# {"price-update":{"contract-name": "", "contract-address": "", "price": 3}} # {"price-update":{"contract-name": "", "contract-address": "", "price": 3}}
print(f'oracle address is : {oracle_address}') print(f'oracle address is : {oracle_address}')
response = requests.get(f'{apiUrl}addr/{oracle_address}') response = requests.get(f'{apiUrl}api/v1/addr/{oracle_address}')
if response.status_code == 200: if response.status_code == 200:
response = response.json() response = response.json()
if 'transactions' not in response.keys(): # API doesn't return 'transactions' key, if 0 txs present on address if 'transactions' not in response.keys(): # API doesn't return 'transactions' key, if 0 txs present on address
@ -284,7 +287,7 @@ def fetch_dynamic_swap_price(contractStructure, blockinfo):
else: else:
transactions = response['transactions'] transactions = response['transactions']
for transaction_hash in transactions: for transaction_hash in transactions:
transaction_response = requests.get(f'{apiUrl}tx/{transaction_hash}') transaction_response = requests.get(f'{apiUrl}api/v1/tx/{transaction_hash}')
if transaction_response.status_code == 200: if transaction_response.status_code == 200:
transaction = transaction_response.json() transaction = transaction_response.json()
floData = transaction['floData'] floData = transaction['floData']
@ -544,7 +547,10 @@ def fetch_swap_contract_transactions(contractName, contractAddress, transactionH
'''if transactionHash: '''if transactionHash:
query += f" WHERE s.transactionHash = '{transactionHash}'"''' query += f" WHERE s.transactionHash = '{transactionHash}'"'''
c.execute(query) try:
c.execute(query)
except:
pass
transactionJsonData = c.fetchall() transactionJsonData = c.fetchall()
return transaction_post_processing(transactionJsonData) return transaction_post_processing(transactionJsonData)
@ -553,6 +559,27 @@ def sort_transactions(transactionJsonData):
transactionJsonData = sorted(transactionJsonData, key=lambda x: x['time'], reverse=True) transactionJsonData = sorted(transactionJsonData, key=lambda x: x['time'], reverse=True)
return transactionJsonData return transactionJsonData
def process_committee_flodata(flodata):
flo_address_list = []
try:
contract_committee_actions = flodata['token-tracker']['contract-committee']
except KeyError:
print('Flodata related to contract committee')
else:
# Adding first and removing later to maintain consistency and not to depend on floData for order of execution
for action in contract_committee_actions.keys():
if action == 'add':
for floid in contract_committee_actions[f'{action}']:
flo_address_list.append(floid)
for action in contract_committee_actions.keys():
if action == 'remove':
for floid in contract_committee_actions[f'{action}']:
flo_address_list.remove(floid)
finally:
return flo_address_list
def refresh_committee_list(admin_flo_id, api_url, blocktime): def refresh_committee_list(admin_flo_id, api_url, blocktime):
committee_list = [] committee_list = []
latest_param = 'true' latest_param = 'true'
@ -823,8 +850,7 @@ async def getAddressBalance():
tempdict = {} tempdict = {}
conn = sqlite3.connect(dblocation) conn = sqlite3.connect(dblocation)
c = conn.cursor() c = conn.cursor()
c.execute( c.execute('SELECT SUM(transferBalance) FROM activeTable WHERE address="{}"'.format(floAddress))
'SELECT SUM(transferBalance) FROM activeTable WHERE address="{}"'.format(floAddress))
balance = c.fetchall()[0][0] balance = c.fetchall()[0][0]
tempdict['balance'] = balance tempdict['balance'] = balance
tempdict['token'] = token tempdict['token'] = token
@ -1527,11 +1553,11 @@ async def getblocktransactions(blockdetail):
@app.route('/api/v1.0/categoriseString/<urlstring>') @app.route('/api/v1.0/categoriseString/<urlstring>')
async def categoriseString(urlstring): async def categoriseString(urlstring):
# check if the hash is of a transaction # check if the hash is of a transaction
response = requests.get('{}tx/{}'.format(apiUrl, urlstring)) response = requests.get('{}api/v1/tx/{}'.format(apiUrl, urlstring))
if response.status_code == 200: if response.status_code == 200:
return jsonify(type='transaction') return jsonify(type='transaction')
else: else:
response = requests.get('{}block/{}'.format(apiUrl, urlstring)) response = requests.get('{}api/v1/block/{}'.format(apiUrl, urlstring))
if response.status_code == 200: if response.status_code == 200:
return jsonify(type='block') return jsonify(type='block')
else: else:
@ -1879,7 +1905,10 @@ async def getContractList_v2():
smart_contracts = return_smart_contracts(c, contractName, contractAddress) smart_contracts = return_smart_contracts(c, contractName, contractAddress)
smart_contracts_morphed = smartcontract_morph_helper(smart_contracts) smart_contracts_morphed = smartcontract_morph_helper(smart_contracts)
conn.close() conn.close()
return jsonify(smartContracts=smart_contracts_morphed), 200
committeeAddressList = refresh_committee_list(APP_ADMIN, apiUrl, int(time.time()))
return jsonify(smartContracts=smart_contracts_morphed, smartContractCommittee=committeeAddressList), 200
@app.route('/api/v2/smartContractInfo', methods=['GET']) @app.route('/api/v2/smartContractInfo', methods=['GET'])
@ -1903,8 +1932,13 @@ async def getContractInfo_v2():
# Categorize into what type of contract it is right now # Categorize into what type of contract it is right now
if contractStructure['contractType'] == 'continuos-event' and contractStructure['subtype'] == 'tokenswap': if contractStructure['contractType'] == 'continuos-event' and contractStructure['subtype'] == 'tokenswap':
conn, c = create_database_connection('smart_contract', {'contract_name': contractName, 'contract_address': contractAddress}) conn, c = create_database_connection('smart_contract', {'contract_name': contractName, 'contract_address': contractAddress})
c.execute('SELECT COUNT(participantAddress), SUM(tokenAmount), SUM(winningAmount) FROM contractparticipants') c.execute('SELECT COUNT(participantAddress), SUM(tokenAmount), SUM(winningAmount) FROM contractparticipants')
participation_details = c.fetchall() participation_details = c.fetchall()
c.execute('SELECT depositAmount FROM contractdeposits')
deposit_details = c.fetchall()
returnval['numberOfParticipants'] = participation_details[0][0] returnval['numberOfParticipants'] = participation_details[0][0]
returnval['totalParticipationAmount'] = participation_details[0][1] returnval['totalParticipationAmount'] = participation_details[0][1]
returnval['totalHonorAmount'] = participation_details[0][2] returnval['totalHonorAmount'] = participation_details[0][2]
@ -2459,11 +2493,11 @@ async def blocktransactions(blockHash):
@app.route('/api/v2/categoriseString/<urlstring>') @app.route('/api/v2/categoriseString/<urlstring>')
async def categoriseString_v2(urlstring): async def categoriseString_v2(urlstring):
# check if the hash is of a transaction # check if the hash is of a transaction
response = requests.get('{}tx/{}'.format(apiUrl, urlstring)) response = requests.get('{}api/v1/tx/{}'.format(apiUrl, urlstring))
if response.status_code == 200: if response.status_code == 200:
return jsonify(type='transaction'), 200 return jsonify(type='transaction'), 200
else: else:
response = requests.get('{}block/{}'.format(apiUrl, urlstring)) response = requests.get('{}api/v1/block/{}'.format(apiUrl, urlstring))
if response.status_code == 200: if response.status_code == 200:
return jsonify(type='block'), 200 return jsonify(type='block'), 200
else: else:
@ -2510,7 +2544,9 @@ async def tokenSmartContractList():
smart_contracts = return_smart_contracts(c, contractName, contractAddress) smart_contracts = return_smart_contracts(c, contractName, contractAddress)
smart_contracts_morphed = smartcontract_morph_helper(smart_contracts) smart_contracts_morphed = smartcontract_morph_helper(smart_contracts)
conn.close() conn.close()
return jsonify(tokens=filelist, smartContracts=smart_contracts_morphed), 200
committeeAddressList = refresh_committee_list(APP_ADMIN, apiUrl, int(time.time()))
return jsonify(tokens=filelist, smartContracts=smart_contracts_morphed, smartContractCommittee=committeeAddressList), 200
class ServerSentEvent: class ServerSentEvent: