diff --git a/beem/cli.py b/beem/cli.py index 4de008cb8c4697b6d00a90a09cf67d04c9de3c01..e19d1d3cf888218fdce44e4e25043acc46b3b7d8 100644 --- a/beem/cli.py +++ b/beem/cli.py @@ -13,6 +13,7 @@ from beem.comment import Comment from beem.market import Market from beem.block import Block from beem.profile import Profile +from beem.asset import Asset from beem.witness import Witness, WitnessesRankedByVote, WitnessesVotedByAccount from beem.blockchain import Blockchain from beem.utils import formatTimeString @@ -981,16 +982,21 @@ def buy(amount, asset, price, account, orderid): Limit buy price denoted in (SBD per STEEM) """ stm = shared_steem_instance() - market = Market(steem_instance=stm) if not account: account = stm.config["default_account"] + if asset == "SBD": + market = Market(base=Asset("STEEM"), quote=Asset("SBD"), steem_instance=stm) + else: + market = Market(base=Asset("SBD"), quote=Asset("STEEM"), steem_instance=stm) if not price: orderbook = market.orderbook(limit=1, raw_data=False) if asset == "STEEM" and len(orderbook["bids"]) > 0: p = Price(orderbook["bids"][0]["base"], orderbook["bids"][0]["quote"], steem_instance=stm).invert() + p_show = p else: p = Price(orderbook["asks"][0]["base"], orderbook["asks"][0]["quote"], steem_instance=stm).invert() - price_ok = click.prompt("Is the following Price ok: %s [y/n]" % (str(p))) + p_show = p + price_ok = click.prompt("Is the following Price ok: %s [y/n]" % (str(p_show))) if price_ok not in ["y", "ye", "yes"]: return else: @@ -1017,16 +1023,21 @@ def sell(amount, asset, price, account, orderid): Limit sell price denoted in (SBD per STEEM) """ stm = shared_steem_instance() - market = Market(steem_instance=stm) + if asset == "SBD": + market = Market(base=Asset("STEEM"), quote=Asset("SBD"), steem_instance=stm) + else: + market = Market(base=Asset("SBD"), quote=Asset("STEEM"), steem_instance=stm) if not account: account = stm.config["default_account"] if not price: orderbook = market.orderbook(limit=1, raw_data=False) if asset == "SBD" and len(orderbook["bids"]) > 0: p = Price(orderbook["bids"][0]["base"], orderbook["bids"][0]["quote"], steem_instance=stm).invert() + p_show = p else: p = Price(orderbook["asks"][0]["base"], orderbook["asks"][0]["quote"], steem_instance=stm).invert() - price_ok = click.prompt("Is the following Price ok: %s [y/n]" % (str(p))) + p_show = p + price_ok = click.prompt("Is the following Price ok: %s [y/n]" % (str(p_show))) if price_ok not in ["y", "ye", "yes"]: return else: diff --git a/beem/market.py b/beem/market.py index b0b44705772b8fe0f8906e30e9b61cda44034b82..eca567965c42bc19ad0253ad51c786460e5458a0 100644 --- a/beem/market.py +++ b/beem/market.py @@ -19,9 +19,9 @@ import random class Market(dict): """ This class allows to easily access Markets on the blockchain for trading, etc. - :param steem.steem.Steem steem_instance: Steem instance - :param steem.asset.Asset base: Base asset - :param steem.asset.Asset quote: Quote asset + :param beem.steem.Steem steem_instance: Steem instance + :param beem.asset.Asset base: Base asset + :param beem.asset.Asset quote: Quote asset :returns: Blockchain Market :rtype: dictionary with overloaded methods @@ -50,14 +50,20 @@ class Market(dict): def __init__( self, steem_instance=None, + *args, + **kwargs ): """ Init Market + + :param beem.steem.Steem steem_instance: Steem instance + :param beem.asset.Asset base: Base asset + :param beem.asset.Asset quote: Quote asset """ self.steem = steem_instance or shared_steem_instance() + base = kwargs.get("base", Asset("SBD", steem_instance=self.steem)) + quote = kwargs.get("quote", Asset("STEEM", steem_instance=self.steem)) - quote = Asset("STEEM", steem_instance=self.steem) - base = Asset("SBD", steem_instance=self.steem) super(Market, self).__init__({"base": base, "quote": quote}) def get_string(self, separator=":"): diff --git a/tests/beem/test_cli.py b/tests/beem/test_cli.py index a31b6addc726badb0d321ce6c8ae72069b407f38..6891a25046f25ddaa4828ec0751225e64187fb4f 100644 --- a/tests/beem/test_cli.py +++ b/tests/beem/test_cli.py @@ -265,13 +265,21 @@ class Testcases(unittest.TestCase): self.assertEqual(result.exit_code, 0) result = runner.invoke(cli, ['-d', 'buy', '1', 'STEEM'], input="y\ntest\n") self.assertEqual(result.exit_code, 0) + result = runner.invoke(cli, ['-d', 'buy', '1', 'SBD', '2.2'], input="test\n") + self.assertEqual(result.exit_code, 0) + result = runner.invoke(cli, ['-d', 'buy', '1', 'SBD'], input="y\ntest\n") + self.assertEqual(result.exit_code, 0) def test_sell(self): runner = CliRunner() result = runner.invoke(cli, ['-d', 'sell', '1', 'STEEM', '2.2'], input="test\n") self.assertEqual(result.exit_code, 0) + result = runner.invoke(cli, ['-d', 'sell', '1', 'SBD', '2.2'], input="test\n") + self.assertEqual(result.exit_code, 0) result = runner.invoke(cli, ['-d', 'sell', '1', 'STEEM'], input="y\ntest\n") self.assertEqual(result.exit_code, 0) + result = runner.invoke(cli, ['-d', 'sell', '1', 'SBD'], input="y\ntest\n") + self.assertEqual(result.exit_code, 0) def test_cancel(self): runner = CliRunner()