Snapshot table

This commit is contained in:
Edgar P. Burkhart 2022-05-22 09:21:30 +02:00
parent a3797bb7fb
commit 15a317dc0f
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
7 changed files with 87 additions and 8 deletions

View file

@ -81,6 +81,9 @@ class Snapshot(models.Model):
previous = models.OneToOneField(
"self", on_delete=models.SET_NULL, blank=True, null=True, editable=False
)
diff = models.DecimalField(
max_digits=12, decimal_places=2, default=0, editable=False
)
def __str__(self):
if self.previous is None:
@ -94,9 +97,10 @@ class Snapshot(models.Model):
.filter(date__lt=self.date)
.first()
)
print(_prev)
try:
_next = self.__class__.objects.get(previous=_prev)
_next = self.__class__.objects.exclude(id=self.id).get(previous=_prev)
except self.__class__.DoesNotExist:
pass
else:
@ -104,6 +108,11 @@ class Snapshot(models.Model):
_next.save(only_super=True)
self.previous = _prev
if self.previous is None:
self.diff = 0
else:
self.diff = self.value - self.previous.value
super().save(*args, **kwargs)
def delete(self, *args, only_super=False, **kwargs):
@ -119,5 +128,14 @@ class Snapshot(models.Model):
else:
super().delete(*args, **kwargs)
@property
def sum(self):
if self.previous is None:
return None
trans = Transaction.objects.filter(
date__lt=self.date, date__gte=self.previous.date
).aggregate(sum=models.Sum("value"))
return trans["sum"] or 0
class Meta:
ordering = ["-date"]