Deleting must delete orders first

This commit is contained in:
Matthias 2020-09-06 14:27:36 +02:00
parent b7662722ba
commit a78d61150c
5 changed files with 10 additions and 8 deletions

View File

@ -1118,8 +1118,7 @@ class FreqtradeBot:
if isclose(filled_amount, 0.0, abs_tol=constants.MATH_CLOSE_PREC):
logger.info('Buy order fully cancelled. Removing %s from database.', trade)
# if trade is not partially completed, just delete the trade
Trade.session.delete(trade)
Trade.session.flush()
trade.delete()
was_trade_fully_canceled = True
else:
# if trade is partially complete, edit the stake details for the trade

View File

@ -446,6 +446,14 @@ class Trade(_DECL_BASE):
def update_order(self, order: Dict) -> None:
Order.update_orders(self.orders, order)
def delete(self) -> None:
for order in self.orders:
Order.session.delete(order)
Trade.session.delete(self)
Trade.session.flush()
def _calc_open_trade_price(self) -> float:
"""
Calculate the open_rate including open_fee.

View File

@ -567,8 +567,7 @@ class RPC:
except (ExchangeError):
pass
Trade.session.delete(trade)
Trade.session.flush()
trade.delete()
self._freqtrade.wallets.update()
return {
'result': 'success',

View File

@ -313,7 +313,6 @@ def test_rpc_delete_trade(mocker, default_conf, fee, markets, caplog):
with pytest.raises(RPCException, match='invalid argument'):
rpc._rpc_delete('200')
create_mock_trades(fee)
trades = Trade.query.all()
trades[1].stoploss_order_id = '1234'
trades[2].stoploss_order_id = '1234'

View File

@ -1074,6 +1074,3 @@ def test_update_order_from_ccxt():
assert o.remaining == 0.0
assert not o.ft_is_open
assert o.order_filled_date is not None