50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
# standard imports
|
|
import json
|
|
|
|
# third-party imports
|
|
from cic_eth.api import Api
|
|
from cic_types.models.person import Person
|
|
from cic_types.processor import generate_metadata_pointer
|
|
|
|
# local imports
|
|
from cic_ussd.chain import Chain
|
|
from cic_ussd.db.models.account import Account
|
|
from cic_ussd.metadata import blockchain_address_to_metadata_pointer
|
|
from cic_ussd.redis import get_cached_data
|
|
|
|
|
|
def define_account_tx_metadata(user: Account):
|
|
# get sender metadata
|
|
identifier = blockchain_address_to_metadata_pointer(
|
|
blockchain_address=user.blockchain_address
|
|
)
|
|
key = generate_metadata_pointer(
|
|
identifier=identifier,
|
|
cic_type='cic.person'
|
|
)
|
|
account_metadata = get_cached_data(key=key)
|
|
|
|
if account_metadata:
|
|
account_metadata = json.loads(account_metadata)
|
|
person = Person()
|
|
deserialized_person = person.deserialize(person_data=account_metadata)
|
|
given_name = deserialized_person.given_name
|
|
family_name = deserialized_person.family_name
|
|
phone_number = deserialized_person.tel
|
|
|
|
return f'{given_name} {family_name} {phone_number}'
|
|
else:
|
|
phone_number = user.phone_number
|
|
return phone_number
|
|
|
|
|
|
def retrieve_account_statement(blockchain_address: str):
|
|
chain_str = Chain.spec.__str__()
|
|
cic_eth_api = Api(
|
|
chain_str=chain_str,
|
|
callback_queue='cic-ussd',
|
|
callback_task='cic_ussd.tasks.callback_handler.process_statement_callback',
|
|
callback_param=blockchain_address
|
|
)
|
|
cic_eth_api.list(address=blockchain_address, limit=9)
|