mirror of
https://github.com/RoboSats/robosats.git
synced 2025-07-23 15:53:31 +00:00
Retro compatible
This commit is contained in:
@ -184,11 +184,19 @@ class Logics:
|
||||
@classmethod
|
||||
def take(cls, order, user, amount=None):
|
||||
is_penalized, time_out = cls.is_penalized(user)
|
||||
take_order = TakeOrder.objects.filter(
|
||||
taker=user, order=order, expires_at__gt=timezone.now()
|
||||
)
|
||||
if is_penalized:
|
||||
return False, {
|
||||
"bad_request",
|
||||
f"You need to wait {time_out} seconds to take an order",
|
||||
}
|
||||
elif take_order.exists():
|
||||
order.log(
|
||||
f"Order already Pre-Taken by Robot({user.robot.id},{user.username}) for {order.amount} fiat units"
|
||||
)
|
||||
return True, None
|
||||
else:
|
||||
take_order = TakeOrder.objects.create(
|
||||
taker=user,
|
||||
@ -202,7 +210,7 @@ class Logics:
|
||||
take_order.save(update_fields=["amount"])
|
||||
|
||||
order.log(
|
||||
f"Taken by Robot({user.robot.id},{user.username}) for {order.amount} fiat units"
|
||||
f"Pre-Taken by Robot({user.robot.id},{user.username}) for {order.amount} fiat units"
|
||||
)
|
||||
return True, None
|
||||
|
||||
|
22
api/views.py
22
api/views.py
@ -244,17 +244,12 @@ class OrderView(viewsets.ViewSet):
|
||||
data["penalty"] = request.user.robot.penalty_expiration
|
||||
|
||||
# Add booleans if user is maker, taker, partipant, buyer or seller
|
||||
is_pretaker = TakeOrder.objects.filter(
|
||||
taker=request.user, order=order, expires_at__gt=timezone.now()
|
||||
).exists()
|
||||
data["is_maker"] = order.maker == request.user
|
||||
data["is_taker"] = order.taker == request.user
|
||||
data["is_pretaker"] = (
|
||||
not data["is_taker"]
|
||||
and TakeOrder.objects.filter(
|
||||
taker=request.user, order=order, expires_at__gt=timezone.now()
|
||||
).exists()
|
||||
)
|
||||
data["is_participant"] = (
|
||||
data["is_maker"] or data["is_taker"] or data["is_pretaker"]
|
||||
)
|
||||
data["is_taker"] = order.taker == request.user or is_pretaker
|
||||
data["is_participant"] = data["is_maker"] or data["is_taker"]
|
||||
|
||||
# 3.a) If not a participant and order is not public, forbid.
|
||||
if (
|
||||
@ -369,11 +364,8 @@ class OrderView(viewsets.ViewSet):
|
||||
return Response(context, status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
# 6) If status is 'Public' and user is PRETAKER, reply with a TAKER hold invoice.
|
||||
elif (
|
||||
order.status == Order.Status.PUB
|
||||
and data["is_pretaker"]
|
||||
and not data["is_taker"]
|
||||
):
|
||||
elif order.status == Order.Status.PUB and is_pretaker and not data["is_taker"]:
|
||||
data["status"] = Order.Status.TAK
|
||||
data["total_secs_exp"] = order.t_to_expire(Order.Status.TAK)
|
||||
|
||||
valid, context = Logics.gen_taker_hold_invoice(order, request.user)
|
||||
|
Reference in New Issue
Block a user