Move account creation to package init file.
This commit is contained in:
parent
4d812a74e6
commit
8a6d332bca
62
apps/cic-ussd/cic_ussd/account/__init__.py
Normal file
62
apps/cic-ussd/cic_ussd/account/__init__.py
Normal file
@ -0,0 +1,62 @@
|
||||
"""This package handles account operations."""
|
||||
|
||||
# external imports
|
||||
from cic_eth.api import Api
|
||||
|
||||
# local imports
|
||||
from cic_ussd.operations import (add_tasks_to_tracker,
|
||||
cache_account_creation_task_id,
|
||||
create_or_update_session,
|
||||
define_multilingual_responses)
|
||||
from cic_ussd.menu.ussd_menu import UssdMenu
|
||||
|
||||
|
||||
def create(chain_str: str,
|
||||
external_session_id: str,
|
||||
phone_number: str,
|
||||
service_code: str,
|
||||
user_input: str) -> str:
|
||||
"""This function issues a task to create a blockchain account on cic-eth. It then creates a record of the ussd
|
||||
session corresponding to the creation of the account and returns a response denoting that the user's account is
|
||||
being created.
|
||||
:param chain_str: The chain name and network id.
|
||||
:type chain_str: str
|
||||
:param external_session_id: A unique ID from africastalking.
|
||||
:type external_session_id: str
|
||||
:param phone_number: The phone number for the account to be created.
|
||||
:type phone_number: str
|
||||
:param service_code: The service code dialed.
|
||||
:type service_code: str
|
||||
:param user_input: The input entered by the user.
|
||||
:type user_input: str
|
||||
:return: A response denoting that the account is being created.
|
||||
:rtype: str
|
||||
"""
|
||||
# attempt to create a user
|
||||
cic_eth_api = Api(callback_task='cic_ussd.tasks.callback_handler.process_account_creation_callback',
|
||||
callback_queue='cic-ussd',
|
||||
callback_param='',
|
||||
chain_str=chain_str)
|
||||
creation_task_id = cic_eth_api.create_account().id
|
||||
|
||||
# record task initiation time
|
||||
add_tasks_to_tracker(task_uuid=creation_task_id)
|
||||
|
||||
# cache account creation data
|
||||
cache_account_creation_task_id(phone_number=phone_number, task_id=creation_task_id)
|
||||
|
||||
# find menu to notify user account is being created
|
||||
current_menu = UssdMenu.find_by_name(name='account_creation_prompt')
|
||||
|
||||
# create a ussd session session
|
||||
create_or_update_session(
|
||||
external_session_id=external_session_id,
|
||||
phone=phone_number,
|
||||
service_code=service_code,
|
||||
current_menu=current_menu.get('name'),
|
||||
user_input=user_input)
|
||||
|
||||
# define response to relay to user
|
||||
response = define_multilingual_responses(
|
||||
key='ussd.kenya.account_creation_prompt', locales=['en', 'sw'], prefix='END')
|
||||
return response
|
Loading…
Reference in New Issue
Block a user