robosats/api/models/take_order.py
2025-03-24 00:11:04 +01:00

45 lines
1.3 KiB
Python

from django.core.validators import MaxValueValidator, MinValueValidator
from django.contrib.auth.models import User
from django.db import models
from django.conf import settings
class TakeOrder(models.Model):
amount = models.DecimalField(max_digits=18, decimal_places=8, null=True, blank=True)
order = models.ForeignKey(
"api.Order",
related_name="order",
on_delete=models.CASCADE,
null=False,
default=None,
blank=False,
)
taker = models.ForeignKey(
User,
related_name="pretaker",
on_delete=models.CASCADE,
null=False,
default=None,
blank=False,
)
expires_at = models.DateTimeField()
taker_bond = models.OneToOneField(
"api.LNPayment",
related_name="take_order",
on_delete=models.SET_NULL,
null=True,
default=None,
blank=True,
)
last_satoshis = models.PositiveBigIntegerField(
null=True,
default=None,
validators=[MinValueValidator(0), MaxValueValidator(settings.MAX_TRADE * 2)],
blank=True,
)
# timestamp of last_satoshis
last_satoshis_time = models.DateTimeField(null=True, default=None, blank=True)
def __str__(self):
return f"Order {self.order.id} taken by Robot({self.taker.robot.id},{self.taker.username}) for {self.amount} fiat units"