From d213a3d35d16f071b2489ad82f76bb4a52fc9185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Thu, 30 Jan 2025 17:54:42 +0100 Subject: [PATCH] Improve purchase view --- games/models.py | 19 ++++++++++++++++--- games/templates/view_purchase.html | 11 ++++++++++- games/views/purchase.py | 6 +++++- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/games/models.py b/games/models.py index 15e0cd3..eba5848 100644 --- a/games/models.py +++ b/games/models.py @@ -3,7 +3,7 @@ from datetime import timedelta from django.core.exceptions import ValidationError from django.db import models from django.db.models import F, Sum -from django.template.defaultfilters import floatformat, slugify +from django.template.defaultfilters import floatformat, pluralize, slugify from django.utils import timezone from common.time import format_duration @@ -148,14 +148,27 @@ class Purchase(models.Model): @property def standardized_name(self): - return self.name if self.name else self.first_game.name + return self.name or self.first_game.name @property def first_game(self): return self.games.first() def __str__(self): - return f"{self.standardized_name} ({self.num_purchases}, {self.date_purchased}, {self.standardized_price})" + return self.standardized_name + + @property + def full_name(self): + additional_info = [ + str(item) + for item in [ + f"{self.num_purchases} game{pluralize(self.num_purchases)}", + self.date_purchased, + self.standardized_price, + ] + if item + ] + return f"{self.standardized_name} ({', '.join(additional_info)})" def is_game(self): return self.type == self.GAME diff --git a/games/templates/view_purchase.html b/games/templates/view_purchase.html index 040c06d..fd1ead0 100644 --- a/games/templates/view_purchase.html +++ b/games/templates/view_purchase.html @@ -2,8 +2,17 @@