costs now in json format

This commit is contained in:
gw3000 2023-07-09 19:51:54 +02:00
parent 826a9ff517
commit 6e642a9785
5 changed files with 24 additions and 9 deletions

View file

@ -43,7 +43,7 @@ class BirdEditForm(forms.ModelForm):
"place", "place",
"status", "status",
"aviary", "aviary",
"cost_sum", # "cost_sum",
# "rescuer", # "rescuer",
] ]
labels = { labels = {
@ -52,6 +52,6 @@ class BirdEditForm(forms.ModelForm):
"place": _("Fundort"), "place": _("Fundort"),
"status": _("Status"), "status": _("Status"),
"aviary": _("Voliere"), "aviary": _("Voliere"),
"cost_sum": _("Kosten der Behandlung [Euro]"), # "cost_sum": _("Kosten der Behandlung [Euro]"),
# "rescuer": _("Retter"), # "rescuer": _("Retter"),
} }

View file

@ -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.conf import settings
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
@ -11,9 +12,9 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
("rescuer", "0001_initial"),
("aviary", "0002_alter_aviary_condition"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL), migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("aviary", "0002_alter_aviary_condition"),
("rescuer", "0001_initial"),
] ]
operations = [ operations = [
@ -82,8 +83,10 @@ class Migration(migrations.Migration):
), ),
("diagnostic_finding", models.CharField(max_length=256)), ("diagnostic_finding", models.CharField(max_length=256)),
( (
"cost_sum", "costs",
models.DecimalField(decimal_places=2, default=0.0, max_digits=5), models.JSONField(
default=bird.models.costs_default, verbose_name="Costs"
),
), ),
( (
"aviary", "aviary",

View file

@ -1,4 +1,5 @@
from uuid import uuid4 from uuid import uuid4
from datetime import date
from aviary.models import Aviary from aviary.models import Aviary
from django.conf import settings from django.conf import settings
@ -6,6 +7,8 @@ from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from rescuer.models import Rescuer from rescuer.models import Rescuer
def costs_default():
return [{"date": date.today().strftime("%Y-%m-%d"), "cost_entry": "0.00"}]
class FallenBird(models.Model): class FallenBird(models.Model):
id = models.UUIDField(primary_key=True, default=uuid4, editable=False) 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")) created = models.DateTimeField(auto_now_add=True, verbose_name=_("angelegt am"))
updated = models.DateTimeField(auto_now=True, verbose_name=_("geändert am")) updated = models.DateTimeField(auto_now=True, verbose_name=_("geändert am"))
diagnostic_finding = models.CharField(max_length=256) 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 = models.ForeignKey(
Rescuer, on_delete=models.SET_NULL, blank=True, null=True Rescuer, on_delete=models.SET_NULL, blank=True, null=True
) )

View file

@ -66,7 +66,7 @@
<td>{{ bird.date_found }}</td> <td>{{ bird.date_found }}</td>
<td>{{ bird.status }}</td> <td>{{ bird.status }}</td>
<td>{{ bird.aviary|default_if_none:"" }}</td> <td>{{ bird.aviary|default_if_none:"" }}</td>
<td>{{ bird.cost_sum }} €</td> <td>{{ bird.costs }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>

View file

@ -41,6 +41,15 @@ def bird_help(request):
@login_required(login_url="account_login") @login_required(login_url="account_login")
def bird_all(request): def bird_all(request):
birds = FallenBird.objects.all() 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() rescuer_modal = Rescuer.objects.all()
context = {"birds": birds, "rescuer_modal": rescuer_modal} context = {"birds": birds, "rescuer_modal": rescuer_modal}
# Post came from the modal form. # Post came from the modal form.