From e4845b580bf11f38b3b7a5f5c76e77a1128eaf53 Mon Sep 17 00:00:00 2001 From: imperosol Date: Sun, 13 Oct 2024 11:46:03 +0200 Subject: [PATCH] fix: invoices month grouping --- core/views/user.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/core/views/user.py b/core/views/user.py index 286a3a92..027a7edc 100644 --- a/core/views/user.py +++ b/core/views/user.py @@ -21,9 +21,11 @@ # Place - Suite 330, Boston, MA 02111-1307, USA. # # +import itertools # This file contains all the views that concern the user model from datetime import date, timedelta +from operator import itemgetter from smtplib import SMTPException from django.conf import settings @@ -665,9 +667,15 @@ class UserAccountView(UserAccountBase): kwargs["refilling_month"] = self.expense_by_month( Refilling.objects.filter(customer=self.object.customer) ) - kwargs["invoices_month"] = self.expense_by_month( - Invoice.objects.filter(user=self.object) - ) + kwargs["invoices_month"] = [ + # the django ORM removes the `group by` clause in this query, + # so a little of post-processing is needed + {"grouped_date": key, "total": sum(i["total"] for i in group)} + for key, group in itertools.groupby( + self.expense_by_month(Invoice.objects.filter(user=self.object)), + key=itemgetter("grouped_date"), + ) + ] kwargs["etickets"] = self.object.customer.buyings.exclude(product__eticket=None) return kwargs