2021-07-20 18:18:27 +02:00
|
|
|
# standard imports
|
|
|
|
import datetime
|
|
|
|
import logging
|
|
|
|
|
|
|
|
# third-party imports
|
|
|
|
import celery
|
|
|
|
|
|
|
|
# local imports
|
2021-11-22 11:23:54 +01:00
|
|
|
from cic_ussd.account.tokens import get_cached_token_data
|
2021-08-06 18:29:01 +02:00
|
|
|
from cic_ussd.account.transaction import from_wei
|
2021-07-20 18:18:27 +02:00
|
|
|
from cic_ussd.notifications import Notifier
|
|
|
|
from cic_ussd.phone_number import Support
|
|
|
|
|
|
|
|
celery_app = celery.current_app
|
|
|
|
logg = logging.getLogger(__file__)
|
|
|
|
notifier = Notifier()
|
|
|
|
|
|
|
|
|
|
|
|
@celery_app.task
|
2021-08-06 18:29:01 +02:00
|
|
|
def transaction(notification_data: dict):
|
2021-07-20 18:18:27 +02:00
|
|
|
"""
|
|
|
|
:param notification_data:
|
|
|
|
:type notification_data:
|
|
|
|
:return:
|
|
|
|
:rtype:
|
|
|
|
"""
|
2021-08-06 18:29:01 +02:00
|
|
|
role = notification_data.get('role')
|
2021-09-22 10:10:33 +02:00
|
|
|
token_value = notification_data.get('token_value')
|
2021-11-22 11:23:54 +01:00
|
|
|
token_symbol = notification_data.get('token_symbol')
|
|
|
|
blockchain_address = notification_data.get('blockchain_address')
|
|
|
|
token_data = get_cached_token_data(blockchain_address, token_symbol)
|
|
|
|
decimals = token_data.get('decimals')
|
|
|
|
amount = token_value if token_value == 0 else from_wei(decimals, token_value)
|
2021-08-06 18:29:01 +02:00
|
|
|
balance = notification_data.get('available_balance')
|
2021-07-20 18:18:27 +02:00
|
|
|
phone_number = notification_data.get('phone_number')
|
|
|
|
preferred_language = notification_data.get('preferred_language')
|
2021-11-22 11:23:54 +01:00
|
|
|
|
2021-08-25 12:33:35 +02:00
|
|
|
alt_metadata_id = notification_data.get('alt_metadata_id')
|
|
|
|
metadata_id = notification_data.get('metadata_id')
|
2021-07-20 18:18:27 +02:00
|
|
|
transaction_type = notification_data.get('transaction_type')
|
|
|
|
timestamp = datetime.datetime.now().strftime('%d-%m-%y, %H:%M %p')
|
|
|
|
|
|
|
|
if transaction_type == 'tokengift':
|
|
|
|
notifier.send_sms_notification(
|
|
|
|
key='sms.account_successfully_created',
|
|
|
|
phone_number=phone_number,
|
|
|
|
preferred_language=preferred_language,
|
2021-08-06 18:29:01 +02:00
|
|
|
support_phone=Support.phone_number)
|
2021-07-20 18:18:27 +02:00
|
|
|
|
|
|
|
if transaction_type == 'transfer':
|
2021-08-06 18:29:01 +02:00
|
|
|
if role == 'recipient':
|
|
|
|
notifier.send_sms_notification('sms.received_tokens',
|
|
|
|
phone_number=phone_number,
|
|
|
|
preferred_language=preferred_language,
|
|
|
|
amount=amount,
|
|
|
|
token_symbol=token_symbol,
|
2021-08-25 12:33:35 +02:00
|
|
|
tx_recipient_information=metadata_id,
|
|
|
|
tx_sender_information=alt_metadata_id,
|
2021-08-06 18:29:01 +02:00
|
|
|
timestamp=timestamp,
|
|
|
|
balance=balance)
|
|
|
|
if role == 'sender':
|
|
|
|
notifier.send_sms_notification('sms.sent_tokens',
|
|
|
|
phone_number=phone_number,
|
|
|
|
preferred_language=preferred_language,
|
|
|
|
amount=amount,
|
|
|
|
token_symbol=token_symbol,
|
2021-08-25 12:33:35 +02:00
|
|
|
tx_recipient_information=alt_metadata_id,
|
|
|
|
tx_sender_information=metadata_id,
|
2021-08-06 18:29:01 +02:00
|
|
|
timestamp=timestamp,
|
|
|
|
balance=balance)
|