mirror of
https://github.com/spiral-project/ihatemoney.git
synced 2025-04-29 17:52:37 +02:00
Move member stats computation to a dedicated method
This commit is contained in:
parent
b1a4572e8c
commit
036cd05e57
2 changed files with 21 additions and 14 deletions
|
@ -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
|
||||||
|
|
|
@ -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',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue