Fix invoice cleanup

This commit is contained in:
koalasat
2025-03-23 23:33:12 +01:00
parent f5fa18ec60
commit c9c9971601
4 changed files with 12 additions and 23 deletions

View File

@ -273,11 +273,10 @@ class Logics:
@classmethod
def take_order_expires(cls, take_order):
if take_order.expires_at < timezone.now():
cls.cancel_bond(take_order.taker_bond)
return True
else:
return False
if take_order.expires_at > timezone.now():
take_order.expires_at = timezone.now()
take_order.save(update_fields=["expires_at"])
cls.cancel_bond(take_order.taker_bond)
@classmethod
def order_expires(cls, order):
@ -322,7 +321,7 @@ class Logics:
take_orders_queryset = TakeOrder.objects.filter(order=order)
for idx, take_order in enumerate(take_orders_queryset):
take_order.cancel(cls)
cls.take_order_expires(take_order)
order.save(update_fields=["expiry_reason"])
@ -446,7 +445,7 @@ class Logics:
@classmethod
def kick_taker(cls, take_order):
"""The taker did not lock the taker_bond. Now he has to go"""
take_order.cancel(cls)
cls.take_order_expires(take_order)
# Add a time out to the taker
if take_order.taker:
robot = take_order.taker.robot
@ -1073,7 +1072,7 @@ class Logics:
take_orders_queryset = TakeOrder.objects.filter(order=order)
for idx, take_order in enumerate(take_orders_queryset):
order.log("Pretaker bond was <b>unlocked</b>")
take_order.cancel(cls)
cls.take_order_expires(take_order)
send_notification.delay(
order_id=order.id, message="public_order_cancelled"

View File

@ -49,8 +49,6 @@ class Command(BaseCommand):
order=order, expires_at__gt=timezone.now()
)
for idx, take_order in enumerate(take_orders_queryset):
take_order.expires_at = order.expires_at
take_order.save()
Logics.take_order_expires(take_order)
# It should not happen, but if it cannot locate the hold invoice
@ -77,10 +75,9 @@ class Command(BaseCommand):
for idx, take_order in enumerate(take_orders_queryset):
context = str(take_order) + " was expired"
try:
if Logics.take_order_expires(
take_order
): # Take order send to expire here
debug["expired_take_orders"].append({idx: context})
Logics.take_order_expires(take_order)
take_order.delete()
debug["expired_take_orders"].append({idx: context})
# It should not happen, but if it cannot locate the hold invoice
# it probably was cancelled by another thread, make it expire anyway.

View File

@ -302,8 +302,8 @@ class Command(BaseCommand):
return
elif hasattr(lnpayment, "order_taken"):
self.stderr.write("Expiting take order with cancelled escrow")
Logics.take_order_expires(lnpayment.order_escrow)
self.stderr.write("Expiting order with cancelled escrow")
Logics.order_expires(lnpayment.order_taken)
return
# TODO If a lnpayment goes from LOCKED to INVGEN. Totally weird

View File

@ -2,7 +2,6 @@ from django.core.validators import MaxValueValidator, MinValueValidator
from django.contrib.auth.models import User
from django.db import models
from django.conf import settings
from django.utils import timezone
class TakeOrder(models.Model):
@ -41,11 +40,5 @@ class TakeOrder(models.Model):
# timestamp of last_satoshis
last_satoshis_time = models.DateTimeField(null=True, default=None, blank=True)
def cancel(self, cls):
if self.expires_at > timezone.now():
self.expires_at = timezone.now()
self.save(update_fields=["expires_at"])
cls.cancel_bond(self.taker_bond)
def __str__(self):
return f"Order {self.order.id} taken by Robot({self.taker.robot.id},{self.taker.username}) for {self.amount} fiat units"