mirror of
https://github.com/freqtrade/freqtrade.git
synced 2026-01-20 14:00:38 +00:00
fix: one-side pairlocks not showing in UI
This commit is contained in:
@@ -39,7 +39,7 @@ class PairLock(ModelBase):
|
||||
|
||||
@staticmethod
|
||||
def query_pair_locks(
|
||||
pair: str | None, now: datetime, side: str = "*"
|
||||
pair: str | None, now: datetime, side: str | None = None
|
||||
) -> ScalarResult["PairLock"]:
|
||||
"""
|
||||
Get all currently active locks for this pair
|
||||
@@ -53,9 +53,9 @@ class PairLock(ModelBase):
|
||||
]
|
||||
if pair:
|
||||
filters.append(PairLock.pair == pair)
|
||||
if side != "*":
|
||||
if side is not None and side != "*":
|
||||
filters.append(or_(PairLock.side == side, PairLock.side == "*"))
|
||||
else:
|
||||
elif side is not None:
|
||||
filters.append(PairLock.side == "*")
|
||||
|
||||
return PairLock.session.scalars(select(PairLock).filter(*filters))
|
||||
|
||||
@@ -67,13 +67,14 @@ class PairLocks:
|
||||
|
||||
@staticmethod
|
||||
def get_pair_locks(
|
||||
pair: str | None, now: datetime | None = None, side: str = "*"
|
||||
pair: str | None, now: datetime | None = None, side: str | None = None
|
||||
) -> Sequence[PairLock]:
|
||||
"""
|
||||
Get all currently active locks for this pair
|
||||
:param pair: Pair to check for. Returns all current locks if pair is empty
|
||||
:param now: Datetime object (generated via datetime.now(timezone.utc)).
|
||||
defaults to datetime.now(timezone.utc)
|
||||
:param side: Side get locks for, can be 'long', 'short', '*' or None
|
||||
"""
|
||||
if not now:
|
||||
now = datetime.now(timezone.utc)
|
||||
@@ -88,7 +89,7 @@ class PairLocks:
|
||||
lock.lock_end_time >= now
|
||||
and lock.active is True
|
||||
and (pair is None or lock.pair == pair)
|
||||
and (lock.side == "*" or lock.side == side)
|
||||
and (side is None or lock.side == "*" or lock.side == side)
|
||||
)
|
||||
]
|
||||
return locks
|
||||
|
||||
@@ -37,6 +37,7 @@ def test_PairLocks(use_db):
|
||||
assert not PairLocks.is_pair_locked(pair)
|
||||
assert not PairLocks.is_pair_locked(pair, side="long")
|
||||
assert PairLocks.is_pair_locked(pair, side="short")
|
||||
assert len(PairLocks.get_pair_locks(pair)) == 1
|
||||
|
||||
# XRP/BTC should not be locked now
|
||||
pair = "XRP/BTC"
|
||||
@@ -47,9 +48,11 @@ def test_PairLocks(use_db):
|
||||
PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=4))
|
||||
assert PairLocks.is_pair_locked(pair)
|
||||
|
||||
# Get both locks from above
|
||||
# Get all locks from above
|
||||
locks = PairLocks.get_pair_locks(None)
|
||||
assert len(locks) == 2
|
||||
assert len(locks) == 4
|
||||
|
||||
assert len(PairLocks.get_pair_locks(None, side="*")) == 2
|
||||
|
||||
# Unlock original pair
|
||||
pair = "ETH/BTC"
|
||||
|
||||
Reference in New Issue
Block a user