simplify status_table command

This commit is contained in:
Matthias 2019-11-12 13:54:26 +01:00
parent 7a2d917c66
commit ab9506df48
4 changed files with 17 additions and 17 deletions

View File

@ -274,7 +274,7 @@ class ApiServer(RPC):
stats = self._rpc_daily_profit(timescale, stats = self._rpc_daily_profit(timescale,
self._config['stake_currency'], self._config['stake_currency'],
self._config['fiat_display_currency'] self._config.get('fiat_display_currency', '')
) )
return self.rest_dump(stats) return self.rest_dump(stats)

View File

@ -3,16 +3,15 @@ This module contains class to define a RPC communications
""" """
import logging import logging
from abc import abstractmethod from abc import abstractmethod
from datetime import timedelta, datetime, date from datetime import date, datetime, timedelta
from decimal import Decimal from decimal import Decimal
from enum import Enum from enum import Enum
from typing import Dict, Any, List, Optional from typing import Any, Dict, List, Optional, Tuple
import arrow import arrow
from numpy import mean, NAN from numpy import NAN, mean
from pandas import DataFrame
from freqtrade import TemporaryError, DependencyException from freqtrade import DependencyException, TemporaryError
from freqtrade.misc import shorten_date from freqtrade.misc import shorten_date
from freqtrade.persistence import Trade from freqtrade.persistence import Trade
from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
@ -117,7 +116,7 @@ class RPC:
results.append(trade_dict) results.append(trade_dict)
return results return results
def _rpc_status_table(self) -> DataFrame: def _rpc_status_table(self, fiat_display_currency: str) -> Tuple[List, List]:
trades = Trade.get_open_trades() trades = Trade.get_open_trades()
if not trades: if not trades:
raise RPCException('no active order') raise RPCException('no active order')
@ -135,12 +134,11 @@ class RPC:
trade.pair, trade.pair,
shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)), shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)),
f'{trade_perc:.2f}%' f'{trade_perc:.2f}%'
]) ])
columns = ['ID', 'Pair', 'Since', 'Profit'] columns = ['ID', 'Pair', 'Since', 'Profit']
df_statuses = DataFrame.from_records(trades_list, columns=columns) return trades_list, columns
df_statuses = df_statuses.set_index(columns[0])
return df_statuses
def _rpc_daily_profit( def _rpc_daily_profit(
self, timescale: int, self, timescale: int,

View File

@ -234,8 +234,8 @@ class Telegram(RPC):
:return: None :return: None
""" """
try: try:
df_statuses = self._rpc_status_table() statlist, head = self._rpc_status_table(self._config.get('fiat_display_currency', ''))
message = tabulate(df_statuses, headers='keys', tablefmt='simple') message = tabulate(statlist, headers=head, tablefmt='simple')
self._send_msg(f"<pre>{message}</pre>", parse_mode=ParseMode.HTML) self._send_msg(f"<pre>{message}</pre>", parse_mode=ParseMode.HTML)
except RPCException as e: except RPCException as e:
self._send_msg(str(e)) self._send_msg(str(e))

View File

@ -109,13 +109,15 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None:
freqtradebot.state = State.RUNNING freqtradebot.state = State.RUNNING
with pytest.raises(RPCException, match=r'.*no active order*'): with pytest.raises(RPCException, match=r'.*no active order*'):
rpc._rpc_status_table() rpc._rpc_status_table('USD')
freqtradebot.create_trades() freqtradebot.create_trades()
result = rpc._rpc_status_table() result, headers = rpc._rpc_status_table('USD')
assert 'instantly' in result['Since'].all() assert "Since" in headers
assert 'ETH/BTC' in result['Pair'].all() assert "Pair" in headers
assert '-0.59%' in result['Profit'].all() assert 'instantly' in result[0][2]
assert 'ETH/BTC' in result[0][1]
assert '-0.59%' in result[0][3]
mocker.patch('freqtrade.exchange.Exchange.get_ticker', mocker.patch('freqtrade.exchange.Exchange.get_ticker',
MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available")))