add different commands for evaluation

This commit is contained in:
2022-09-04 13:38:15 +02:00
parent 5106557b68
commit 0cbcb4611d
3 changed files with 110 additions and 0 deletions
@@ -0,0 +1,46 @@
from django.contrib.auth import get_user_model
from django.core.management import BaseCommand
from django.db.models import Sum
from gaehsnitz.models import Drink
User = get_user_model()
class Command(BaseCommand):
def handle(self, *args, **options):
id_to_name = {d.id: d.name for d in Drink.objects.all()}
for user in User.objects.all().order_by("username"):
print(f">>> {user.username.capitalize()}")
to_pay = user.consumed_drinks_price
if to_pay != 0:
paid_consumption = user.consumption_list.filter(for_free=False)
drink_list = []
for drink_dict in paid_consumption.values("drink_id").annotate(amount=Sum("amount")):
name = id_to_name[drink_dict["drink_id"]]
amount = drink_dict["amount"]
drink_list.append(f"{amount}x {name}")
drink_list_str = ", ".join(drink_list)
print(f"zu zahlen: {to_pay:.2f} € ({drink_list_str})")
donated = user.donations_made
if donated != 0:
don_list = [f"{don.date:%d.%m.} {don.amount:.2f}" for don in user.donations.order_by("date")]
don_list_str = ", ".join(don_list)
print(f"gespendet: {donated:.2f} € ({don_list_str})")
paid = user.other_payments_made
if paid != 0:
pay_list = [f"{pay.purpose} {pay.amount:.2f}" for pay in user.payments.order_by("date")]
pay_list_str = ", ".join(pay_list)
print(f"bezahlt: {paid:.2f} € ({pay_list_str})")
paid_back = user.paybacks_received
if paid_back != 0:
pb_list = [f"{pb.date:%d.%m.} {pb.amount:.2f}" for pb in user.paybacks.order_by("date")]
pb_list_str = ", ".join(pb_list)
print(f"zurückbekommen: {paid_back:.2f} € ({pb_list_str})")
balance = donated + paid - to_pay - paid_back
print(f"==> STAND: {balance:.2f}")
print()