diff --git a/nummi/main/forms.py b/nummi/main/forms.py index 1150fb3..7a65a18 100644 --- a/nummi/main/forms.py +++ b/nummi/main/forms.py @@ -71,15 +71,5 @@ class SnapshotForm(NummiForm): id__in=self.cleaned_data["transactions"] ) - to_update = list( - new_transactions.order_by().only("snapshot").distinct("snapshot") - ) - - instance.account.transaction_set.add(*new_transactions) - instance.transaction_set.add(*new_transactions) - instance.update_sum() - - for upd in to_update: - upd.snapshot.update_sum() - + instance.transaction_set.add(*new_transactions, bulk=False) return instance diff --git a/nummi/main/models.py b/nummi/main/models.py index 3ac83d7..5336fec 100644 --- a/nummi/main/models.py +++ b/nummi/main/models.py @@ -159,10 +159,15 @@ class Snapshot(AccountModel): trans.save() self.diff = self.value - self.start_value + self.sum = ( + self.transaction_set.aggregate(sum=models.Sum("value")).get("sum", 0) or 0 + ) super().save(*args, **kwargs) def update_sum(self): - self.sum = self.transaction_set.aggregate(sum=models.Sum("value")).get("sum", 0) + self.sum = ( + self.transaction_set.aggregate(sum=models.Sum("value")).get("sum", 0) or 0 + ) super().save() def delete(self, *args, **kwargs): @@ -219,10 +224,14 @@ class Transaction(CustomModel): ) def save(self, *args, **kwargs): - prev_self = Transaction.objects.get(pk=self.pk) + if Transaction.objects.filter(pk=self.pk): + prev_self = Transaction.objects.get(pk=self.pk) + else: + prev_self = None self.account = self.snapshot.account super().save(*args, **kwargs) - prev_self.snapshot.update_sum() + if prev_self is not None: + prev_self.snapshot.update_sum() self.snapshot.update_sum() def __str__(self): diff --git a/nummi/main/templates/main/index.html b/nummi/main/templates/main/index.html index 499a59f..3d94a7a 100644 --- a/nummi/main/templates/main/index.html +++ b/nummi/main/templates/main/index.html @@ -66,19 +66,19 @@ {{ snap.date|date:"Y-m-d" }} - - {{ snap.account }} + + {{ snap.account }} {{ snap.value|value }} {{ snap.diff|pmvalue }} {% with sum=snap.sum %} {{ sum|pmvalue }} - {% if sum == snap.diff %} - - {% else %} - - {% endif %} + {% if sum == snap.diff %} + + {% else %} + + {% endif %} {% endwith %} diff --git a/nummi/main/templates/main/snapshot_form.html b/nummi/main/templates/main/snapshot_form.html index fd71694..65e455e 100644 --- a/nummi/main/templates/main/snapshot_form.html +++ b/nummi/main/templates/main/snapshot_form.html @@ -71,9 +71,9 @@ {% endfor %} {% endif %} - {% if snapshot.transactions %} + {% if snapshot.transaction_set.all %}

{% translate "Transactions" %} ({{ snapshot.sum|pmvalue }} / {{ snapshot.diff|pmvalue }})

- {% transaction_table snapshot.transactions %} + {% transaction_table snapshot.transaction_set.all %} {% endif %} {% endwith %} {% endblock %}