From 6e642a97857029d7d5fcae43f3a12c1b6eceda9f Mon Sep 17 00:00:00 2001 From: gw3000 Date: Sun, 9 Jul 2023 19:51:54 +0200 Subject: [PATCH] costs now in json format --- bird/forms.py | 4 ++-- bird/migrations/0001_initial.py | 13 ++++++++----- bird/models.py | 5 ++++- bird/templates/bird/bird_all.html | 2 +- bird/views.py | 9 +++++++++ 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/bird/forms.py b/bird/forms.py index 12c5e9e..6b0f3e6 100644 --- a/bird/forms.py +++ b/bird/forms.py @@ -43,7 +43,7 @@ class BirdEditForm(forms.ModelForm): "place", "status", "aviary", - "cost_sum", + # "cost_sum", # "rescuer", ] labels = { @@ -52,6 +52,6 @@ class BirdEditForm(forms.ModelForm): "place": _("Fundort"), "status": _("Status"), "aviary": _("Voliere"), - "cost_sum": _("Kosten der Behandlung [Euro]"), + # "cost_sum": _("Kosten der Behandlung [Euro]"), # "rescuer": _("Retter"), } diff --git a/bird/migrations/0001_initial.py b/bird/migrations/0001_initial.py index c485622..14b8400 100644 --- a/bird/migrations/0001_initial.py +++ b/bird/migrations/0001_initial.py @@ -1,5 +1,6 @@ -# Generated by Django 4.2.2 on 2023-07-08 20:30 +# Generated by Django 4.2.2 on 2023-07-09 11:26 +import bird.models from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -11,9 +12,9 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ("rescuer", "0001_initial"), - ("aviary", "0002_alter_aviary_condition"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("aviary", "0002_alter_aviary_condition"), + ("rescuer", "0001_initial"), ] operations = [ @@ -82,8 +83,10 @@ class Migration(migrations.Migration): ), ("diagnostic_finding", models.CharField(max_length=256)), ( - "cost_sum", - models.DecimalField(decimal_places=2, default=0.0, max_digits=5), + "costs", + models.JSONField( + default=bird.models.costs_default, verbose_name="Costs" + ), ), ( "aviary", diff --git a/bird/models.py b/bird/models.py index 4afaaee..4dce315 100644 --- a/bird/models.py +++ b/bird/models.py @@ -1,4 +1,5 @@ from uuid import uuid4 +from datetime import date from aviary.models import Aviary from django.conf import settings @@ -6,6 +7,8 @@ from django.db import models from django.utils.translation import gettext_lazy as _ from rescuer.models import Rescuer +def costs_default(): + return [{"date": date.today().strftime("%Y-%m-%d"), "cost_entry": "0.00"}] class FallenBird(models.Model): id = models.UUIDField(primary_key=True, default=uuid4, editable=False) @@ -18,7 +21,7 @@ class FallenBird(models.Model): created = models.DateTimeField(auto_now_add=True, verbose_name=_("angelegt am")) updated = models.DateTimeField(auto_now=True, verbose_name=_("geändert am")) diagnostic_finding = models.CharField(max_length=256) - cost_sum = models.DecimalField(max_digits=5, decimal_places=2, default=0.00) + costs = models.JSONField("Costs", default=costs_default) rescuer = models.ForeignKey( Rescuer, on_delete=models.SET_NULL, blank=True, null=True ) diff --git a/bird/templates/bird/bird_all.html b/bird/templates/bird/bird_all.html index 06469cf..042b479 100644 --- a/bird/templates/bird/bird_all.html +++ b/bird/templates/bird/bird_all.html @@ -66,7 +66,7 @@ {{ bird.date_found }} {{ bird.status }} {{ bird.aviary|default_if_none:"" }} - {{ bird.cost_sum }} € + {{ bird.costs }} {% endfor %} diff --git a/bird/views.py b/bird/views.py index b500e9d..89bb73f 100644 --- a/bird/views.py +++ b/bird/views.py @@ -41,6 +41,15 @@ def bird_help(request): @login_required(login_url="account_login") def bird_all(request): birds = FallenBird.objects.all() + # Sum all costs per bird from json + for bird in birds: + costs_per_bird = float() + for item in bird.costs: + costs_per_bird += float(item['cost_entry']) + if costs_per_bird == 0.0: + costs_per_bird = "" + bird.costs = costs_per_bird + rescuer_modal = Rescuer.objects.all() context = {"birds": birds, "rescuer_modal": rescuer_modal} # Post came from the modal form.