From 8ff3905657d6171b68e3e8051edae456a16f86ca Mon Sep 17 00:00:00 2001 From: Patrick Mayr Date: Thu, 30 Oct 2025 15:00:20 +0100 Subject: [PATCH] Add total deposit calculation to Rental model --- fet2020/rental/admin.py | 11 +++-------- fet2020/rental/models.py | 9 +++++++++ fet2020/rental/utils.py | 6 +----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/fet2020/rental/admin.py b/fet2020/rental/admin.py index b8f60b8a..5bb7487f 100644 --- a/fet2020/rental/admin.py +++ b/fet2020/rental/admin.py @@ -93,15 +93,10 @@ class RentalAdmin(admin.ModelAdmin): obj.author = request.user super().save_model(request, obj, form, change) - @admin.display(description="Kaution (EUR)") + @admin.display(description="Kaution insgesamt") def total_disposit(self, obj): - total_disposit = 0 - - if not obj.intern: - for elem in obj.rentalitems.all(): - total_disposit += elem.deposit - - return f"{total_disposit}" + total_disposit = obj.calc_total_deposit() + return f"{total_disposit} €" @admin.register(RentalItem) diff --git a/fet2020/rental/models.py b/fet2020/rental/models.py index 6a31d3ab..f874c00b 100644 --- a/fet2020/rental/models.py +++ b/fet2020/rental/models.py @@ -111,3 +111,12 @@ class Rental(models.Model): if self.date_start > self.date_end: raise ValidationError("Das Abholdatum muss vor dem Rückgabedatum liegen.") + + def calc_total_deposit(self) -> int: + total_deposit = 0 + + if not self.intern: + for item in self.rentalitems.all(): + total_deposit += item.deposit + + return total_deposit diff --git a/fet2020/rental/utils.py b/fet2020/rental/utils.py index 72404a63..0f52a2dd 100644 --- a/fet2020/rental/utils.py +++ b/fet2020/rental/utils.py @@ -27,12 +27,7 @@ def generate_rental_pdf(rental: Rental) -> bool: }, ) - total_deposit = 0 - for i, item in enumerate(rental.rentalitems.all(), start=1): - if not rental.intern: - total_deposit += item.deposit - data.update( { f"Produkt Row{i}": item.name, @@ -41,6 +36,7 @@ def generate_rental_pdf(rental: Rental) -> bool: }, ) + total_deposit = rental.calc_total_deposit() data.update({"Gesamtkaution": str(total_deposit)}) # Write data in pdf