def __init__(self, token=None, is_master=False, valid_roles=None, **kwargs): super(Organisation, self).__init__(**kwargs) self.external_auth_username = '******'+ self.name.lower().replace(' ', '_') self.external_auth_password = secrets.token_hex(16) self.valid_roles = valid_roles or list(ASSIGNABLE_TIERS.keys()) if is_master: if Organisation.query.filter_by(is_master=True).first(): raise Exception("A master organisation already exists") self.is_master = True self.system_blockchain_address = bt.create_blockchain_wallet( private_key=current_app.config['MASTER_WALLET_PRIVATE_KEY'], wei_target_balance=0, wei_topup_threshold=0, ) self.primary_blockchain_address = self.system_blockchain_address or bt.create_blockchain_wallet() else: self.is_master = False self.system_blockchain_address = bt.create_blockchain_wallet( wei_target_balance=current_app.config['SYSTEM_WALLET_TARGET_BALANCE'], wei_topup_threshold=current_app.config['SYSTEM_WALLET_TOPUP_THRESHOLD'], ) self.primary_blockchain_address = bt.create_blockchain_wallet() if token: self.bind_token(token)
def __init__(self, blockchain_address=None, **kwargs): super(User, self).__init__(**kwargs) self.secret = ''.join(random.choices( string.ascii_letters + string.digits, k=16)) self.primary_blockchain_address = blockchain_address or bt.create_blockchain_wallet()
def __init__(self, blockchain_address=None, **kwargs): super(User, self).__init__(**kwargs) self.secret = ''.join(random.choices( string.ascii_letters + string.digits, k=16)) if self.registration_method != RegistrationMethodEnum.USSD_SIGNUP: self.primary_blockchain_address = blockchain_address or bt.create_blockchain_wallet()
def loaded_master_wallet_address(load_account): """ A blockchain address that isn't tracked in the Sempo system like a regular one. Used during testing for deploying blockchain components that are normally controlled by an external entity, eg reserve tokens """ from server import bt deploying_address = bt.create_blockchain_wallet(private_key=config.MASTER_WALLET_PRIVATE_KEY) load_account(deploying_address) return deploying_address
def __init__(self, blockchain_address: Optional[str] = None, bound_entity: Optional[Union[Organisation, User]] = None, account_type: Optional[TransferAccountType] = None, private_key: Optional[str] = None, **kwargs): super(TransferAccount, self).__init__(**kwargs) if bound_entity: bound_entity.transfer_accounts.append(self) if isinstance(bound_entity, Organisation): self.account_type = TransferAccountType.ORGANISATION self.blockchain_address = bound_entity.primary_blockchain_address self._bind_to_organisation(bound_entity) elif isinstance(bound_entity, User): self.account_type = TransferAccountType.USER self.blockchain_address = bound_entity.primary_blockchain_address if bound_entity.default_organisation: self._bind_to_organisation( bound_entity.default_organisation) elif isinstance(bound_entity, ExchangeContract): self.account_type = TransferAccountType.CONTRACT self.blockchain_address = bound_entity.blockchain_address self.is_public = True self.exchange_contact = self if not self.organisation: master_organisation = Organisation.master_organisation() if not master_organisation: print('master_organisation not found') if master_organisation: self._bind_to_organisation(master_organisation) if blockchain_address: self.blockchain_address = blockchain_address if not self.blockchain_address: self.blockchain_address = bt.create_blockchain_wallet( private_key=private_key) if account_type: self.account_type = account_type