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

View File

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

View File

@ -302,8 +302,8 @@ class Command(BaseCommand):
return return
elif hasattr(lnpayment, "order_taken"): elif hasattr(lnpayment, "order_taken"):
self.stderr.write("Expiting take order with cancelled escrow") self.stderr.write("Expiting order with cancelled escrow")
Logics.take_order_expires(lnpayment.order_escrow) Logics.order_expires(lnpayment.order_taken)
return return
# TODO If a lnpayment goes from LOCKED to INVGEN. Totally weird # 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.contrib.auth.models import User
from django.db import models from django.db import models
from django.conf import settings from django.conf import settings
from django.utils import timezone
class TakeOrder(models.Model): class TakeOrder(models.Model):
@ -41,11 +40,5 @@ class TakeOrder(models.Model):
# timestamp of last_satoshis # timestamp of last_satoshis
last_satoshis_time = models.DateTimeField(null=True, default=None, blank=True) 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): def __str__(self):
return f"Order {self.order.id} taken by Robot({self.taker.robot.id},{self.taker.username}) for {self.amount} fiat units" return f"Order {self.order.id} taken by Robot({self.taker.robot.id},{self.taker.username}) for {self.amount} fiat units"