def test_get_or_create_network_asset(dbsession): """We should upsert asset by name.""" with transaction.manager: network = AssetNetwork(name="Foo Bank") dbsession.add(network) dbsession.flush() asset = network.get_or_create_asset_by_name("Footoken") asset.asset_class = AssetClass.token dbsession.flush() aid = asset.id with transaction.manager: network = dbsession.query(AssetNetwork).first() asset = network.get_or_create_asset_by_name("Footoken") assert asset.id == aid
def test_get_or_create_network_asset(dbsession): """We should upsert asset by name.""" with transaction.manager: network = AssetNetwork(name="Foo Bank") dbsession.add(network) dbsession.flush() asset, _ = network.get_or_create_asset_by_name("Footoken") asset.asset_class = AssetClass.token dbsession.flush() aid = asset.id with transaction.manager: network = dbsession.query(AssetNetwork).first() asset, _ = network.get_or_create_asset_by_name("Footoken") assert asset.id == aid
def get_eth_network(dbsession: Session, asset_network_name="ethereum") -> AssetNetwork: """Create Ethereum network instance. :param asset_network_name: What network we use. *ethereum* for main network, *testnet* for testnet. """ network = dbsession.query(AssetNetwork).filter_by(name=asset_network_name).one_or_none() if not network: network = AssetNetwork(name=asset_network_name) dbsession.add(network) dbsession.flush() # Gives us network.id return network
def create_house_address(network: AssetNetwork) -> CryptoAddressCreation: """Sets up house Ethereum account. Store CryptoAddress UUID under "house_address" key in network.other_data JSON bag. """ assert not network.other_data.get("house_address") op = CryptoAddress.create_address(network) op.required_confirmation_count = 1 addr_id = op.address.id assert addr_id network.other_data["house_address"] = str(addr_id) return op
def get_house_holdings_by_symbol(network: AssetNetwork, symbol: str) -> CryptoAddressAccount: """Get a asset holded by a house.""" asset = network.get_asset_by_symbol(symbol) return get_house_holdings(network, asset)
def create_token(network: AssetNetwork, name: str, symbol: str, supply: int, initial_owner_address: CryptoAddress) -> Asset: asset = network.create_asset(name=name, symbol=symbol, supply=Decimal(supply), asset_class=AssetClass.token) op = initial_owner_address.create_token(asset) return asset