diff --git a/api/logics.py b/api/logics.py index 5e66de91..0d50148a 100644 --- a/api/logics.py +++ b/api/logics.py @@ -219,15 +219,21 @@ class Logics: def is_buyer(order, user): is_maker = order.maker == user is_taker = order.taker == user + is_pretaker = TakeOrder.objects.filter( + taker=user, order=order, expires_at__gt=timezone.now() + ).exists() return (is_maker and order.type == Order.Types.BUY) or ( - is_taker and order.type == Order.Types.SELL + (is_pretaker or is_taker) and order.type == Order.Types.SELL ) def is_seller(order, user): is_maker = order.maker == user is_taker = order.taker == user + is_pretaker = TakeOrder.objects.filter( + taker=user, order=order, expires_at__gt=timezone.now() + ).exists() return (is_maker and order.type == Order.Types.SELL) or ( - is_taker and order.type == Order.Types.BUY + (is_pretaker or is_taker) and order.type == Order.Types.BUY ) def calc_sats(amount, exchange_rate, premium): diff --git a/tests/test_trade_pipeline.py b/tests/test_trade_pipeline.py index ea58ed45..5c93e8c3 100644 --- a/tests/test_trade_pipeline.py +++ b/tests/test_trade_pipeline.py @@ -437,7 +437,7 @@ class TradeTest(BaseAPITestCase): self.assertAlmostEqual(float(data["amount"]), 80) self.assertFalse(data["is_maker"]) self.assertFalse(data["is_buyer"]) - self.assertFalse(data["is_seller"]) + self.assertTrue(data["is_seller"]) self.assertTrue(data["is_taker"]) self.assertTrue(data["is_participant"]) self.assertTrue(data["maker_locked"]) @@ -506,7 +506,7 @@ class TradeTest(BaseAPITestCase): self.assertEqual(data["maker_status"], "Active") self.assertFalse(data["is_maker"]) self.assertFalse(data["is_buyer"]) - self.assertFalse(data["is_seller"]) + self.assertTrue(data["is_seller"]) self.assertTrue(data["is_taker"]) self.assertTrue(data["is_participant"]) self.assertTrue(data["maker_locked"]) @@ -544,7 +544,7 @@ class TradeTest(BaseAPITestCase): self.assertEqual(data["maker_status"], "Active") self.assertFalse(data["is_maker"]) self.assertFalse(data["is_buyer"]) - self.assertFalse(data["is_seller"]) + self.assertTrue(data["is_seller"]) self.assertTrue(data["is_taker"]) self.assertTrue(data["is_participant"]) self.assertTrue(data["maker_locked"])