From 036cd05e5716a694f575b3c65f6541f04a8b48bf Mon Sep 17 00:00:00 2001 From: Jocelyn Delalande Date: Sat, 3 Feb 2018 18:26:44 +0100 Subject: [PATCH] Move member stats computation to a dedicated method --- ihatemoney/models.py | 20 ++++++++++++++++++++ ihatemoney/web.py | 15 +-------------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/ihatemoney/models.py b/ihatemoney/models.py index aa3083d6..c6ce23fb 100644 --- a/ihatemoney/models.py +++ b/ihatemoney/models.py @@ -52,6 +52,26 @@ class Project(db.Model): return balances + @property + def members_stats(self): + """Compute what each member has paid + + :return: one stat dict per member + :rtype list: + """ + return [{ + 'member': member, + 'paid': sum([ + bill.amount + for bill in self.get_member_bills(member.id).all() + ]), + 'spent': sum([ + bill.pay_each() * member.weight + for bill in self.get_bills().all() if member in bill.owers + ]), + 'balance': self.balance[member.id] + } for member in self.active_members] + @property def uses_weights(self): return len([i for i in self.members if i.weight != 1]) > 0 diff --git a/ihatemoney/web.py b/ihatemoney/web.py index 85b02e5b..1e162024 100644 --- a/ihatemoney/web.py +++ b/ihatemoney/web.py @@ -566,22 +566,9 @@ def settle_bill(): @main.route("//statistics") def statistics(): """Compute what each member has paid and spent and display it""" - members_stats = [{ - 'member': member, - 'paid': sum([ - bill.amount - for bill in g.project.get_member_bills(member.id).all() - ]), - 'spent': sum([ - bill.pay_each() * member.weight - for bill in g.project.get_bills().all() if member in bill.owers - ]), - 'balance': g.project.balance[member.id] - } for member in g.project.active_members] - return render_template( "statistics.html", - members_stats=members_stats, + members_stats=g.project.members_stats, current_view='statistics', )