aboutsummaryrefslogtreecommitdiff
path: root/budget/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'budget/models.py')
-rw-r--r--budget/models.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/budget/models.py b/budget/models.py
index 852b3e1..3aac120 100644
--- a/budget/models.py
+++ b/budget/models.py
@@ -37,7 +37,7 @@ class Project(db.Model):
# for each person
for person in self.members:
# get the list of bills he has to pay
- bills = Bill.query.filter(Bill.owers.contains(person))
+ bills = Bill.query.options(orm.subqueryload(Bill.owers)).filter(Bill.owers.contains(person))
for bill in bills.all():
if person != bill.payer:
share = bill.pay_each() * person.weight
@@ -61,9 +61,9 @@ class Project(db.Model):
credits, debts, transactions = [],[],[]
# Create lists of credits and debts
for person in self.members:
- if balance[person.id] > 0:
+ if round(balance[person.id], 2) > 0:
credits.append({"person": person, "balance": balance[person.id]})
- elif balance[person.id] < 0:
+ elif round(balance[person.id], 2) < 0:
debts.append({"person": person, "balance": -balance[person.id]})
# Try and find exact matches
for credit in credits:
@@ -111,7 +111,8 @@ class Project(db.Model):
.filter(Bill.payer_id == Person.id)\
.filter(Person.project_id == Project.id)\
.filter(Project.id == self.id)\
- .order_by(Bill.date.desc())
+ .order_by(Bill.date.desc())\
+ .order_by(Bill.id.desc())
def remove_member(self, member_id):
"""Remove a member from the project.