From 29e30024ad7834ca9090e501e0c232203948f816 Mon Sep 17 00:00:00 2001 From: Flo Ha Date: Tue, 12 Jul 2022 20:37:40 +0200 Subject: [PATCH] use stored payments in finance view and improve design --- gaehsnitz/static/gaehsnitz/style.css | 6 ++-- gaehsnitz/templates/gaehsnitz/finance.html | 42 +++++++++++----------- gaehsnitz/views.py | 28 ++++++++++++++- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/gaehsnitz/static/gaehsnitz/style.css b/gaehsnitz/static/gaehsnitz/style.css index 8cb7baa..45d061d 100644 --- a/gaehsnitz/static/gaehsnitz/style.css +++ b/gaehsnitz/static/gaehsnitz/style.css @@ -105,6 +105,8 @@ table { margin-top: 12px; margin-bottom: 12px; border-spacing: 0; + border-right: 1px solid #664422; + border-bottom: 1px solid #664422; } td { @@ -112,8 +114,8 @@ td { text-align: right; font-size: 0.9rem; border-top: 1px solid #664422; - border-left: 1px solid #664422;; - padding: 2px 4px; + border-left: 1px solid #664422; + padding: 3px 6px; } .bandbox { diff --git a/gaehsnitz/templates/gaehsnitz/finance.html b/gaehsnitz/templates/gaehsnitz/finance.html index 14af602..1d38bcb 100644 --- a/gaehsnitz/templates/gaehsnitz/finance.html +++ b/gaehsnitz/templates/gaehsnitz/finance.html @@ -16,41 +16,39 @@

aktueller Stand

-

Ausgaben

-

Summe: 10€

+

Summe: {{ overall_sum }}€

-

Einnahmen

- -

Summe: 95€

+

Details

-

Gesamt: +85€

+ {% for topic, payments in detailed_payments.items %} +

{{ topic }}:

+ + {% for payment in payments %} + + + + + + + {% endfor %} +
{{ payment.date|date:"d.m." }}{{ payment.amount }}€{{ payment.other_party }}{{ payment.note }}
+ {% endfor %}

Geplantes

Ausgaben

-

Summe: 920 - 1.770€

- -

Einnahmen

- +

Summe: 1.080 - 1.800€

Getränke

Wir haben hier mal mit der Erfahrung des letzten Jahres grob überschlagen:

diff --git a/gaehsnitz/views.py b/gaehsnitz/views.py index 369a160..e1004c4 100644 --- a/gaehsnitz/views.py +++ b/gaehsnitz/views.py @@ -1,7 +1,11 @@ -from datetime import date +from collections import defaultdict +from datetime import date, timezone +from django.utils import timezone from django.views.generic import TemplateView +from gaehsnitz.models import Payment + festival_start_date, festival_end_date = date(2022, 8, 25), date(2022, 8, 28) @@ -31,6 +35,28 @@ class ProgramView(GaehsnitzTemplateView): class FinanceView(GaehsnitzTemplateView): template_name = "gaehsnitz/finance.html" + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + balance_dict = defaultdict(int) + detailed_payments = defaultdict(list) + overall_sum = 0 + for payment in Payment.objects.filter(date__year=timezone.now().year).order_by("topic", "date"): + topic_name = Payment.Topic(payment.topic).label + sign = 1 if payment.is_incoming() else -1 + balance_dict[topic_name] += sign * payment.amount + overall_sum += sign * payment.amount + if payment.is_outgoing() and payment.topic != Payment.Topic.bands: + detailed_payments[topic_name].append(payment) + + context.update({ + # apparently defaultdicts do not work + "balance_dict": dict(balance_dict), + "overall_sum": overall_sum, + "detailed_payments": dict(detailed_payments), + }) + return context + class ForBandsView(GaehsnitzTemplateView): template_name = "gaehsnitz/for-bands.html"