Snapshot table
This commit is contained in:
parent
a3797bb7fb
commit
15a317dc0f
7 changed files with 87 additions and 8 deletions
|
@ -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"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue