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,
self._config['stake_currency'],
self._config['fiat_display_currency']
self._config.get('fiat_display_currency', '')
)
return self.rest_dump(stats)

View File

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

View File

@ -234,8 +234,8 @@ class Telegram(RPC):
:return: None
"""
try:
df_statuses = self._rpc_status_table()
message = tabulate(df_statuses, headers='keys', tablefmt='simple')
statlist, head = self._rpc_status_table(self._config.get('fiat_display_currency', ''))
message = tabulate(statlist, headers=head, tablefmt='simple')
self._send_msg(f"<pre>{message}</pre>", parse_mode=ParseMode.HTML)
except RPCException as 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
with pytest.raises(RPCException, match=r'.*no active order*'):
rpc._rpc_status_table()
rpc._rpc_status_table('USD')
freqtradebot.create_trades()
result = rpc._rpc_status_table()
assert 'instantly' in result['Since'].all()
assert 'ETH/BTC' in result['Pair'].all()
assert '-0.59%' in result['Profit'].all()
result, headers = rpc._rpc_status_table('USD')
assert "Since" in headers
assert "Pair" in headers
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',
MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available")))