Move member stats computation to a dedicated method

This commit is contained in:
Jocelyn Delalande 2018-02-03 18:26:44 +01:00
parent b1a4572e8c
commit 036cd05e57
2 changed files with 21 additions and 14 deletions

View file

@ -52,6 +52,26 @@ class Project(db.Model):
return balances 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 @property
def uses_weights(self): def uses_weights(self):
return len([i for i in self.members if i.weight != 1]) > 0 return len([i for i in self.members if i.weight != 1]) > 0

View file

@ -566,22 +566,9 @@ def settle_bill():
@main.route("/<project_id>/statistics") @main.route("/<project_id>/statistics")
def statistics(): def statistics():
"""Compute what each member has paid and spent and display it""" """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( return render_template(
"statistics.html", "statistics.html",
members_stats=members_stats, members_stats=g.project.members_stats,
current_view='statistics', current_view='statistics',
) )