aboutsummaryrefslogtreecommitdiff
path: root/ihatemoney/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ihatemoney/models.py')
-rw-r--r--ihatemoney/models.py48
1 files changed, 38 insertions, 10 deletions
diff --git a/ihatemoney/models.py b/ihatemoney/models.py
index 9e9fbeb..3c36e76 100644
--- a/ihatemoney/models.py
+++ b/ihatemoney/models.py
@@ -13,11 +13,6 @@ db = SQLAlchemy()
class Project(db.Model):
- _to_serialize = (
- "id", "name", "contact_email", "members", "active_members",
- "balance"
- )
-
id = db.Column(db.String(64), primary_key=True)
name = db.Column(db.UnicodeText)
@@ -26,6 +21,23 @@ class Project(db.Model):
members = db.relationship("Person", backref="project")
@property
+ def _to_serialize(self):
+ obj = {
+ "id": self.id,
+ "name": self.name,
+ "contact_email": self.contact_email,
+ "members": [],
+ }
+
+ balance = self.balance
+ for member in self.members:
+ member_obj = member._to_serialize
+ member_obj['balance'] = balance.get(member.id, 0)
+ obj['members'].append(member_obj)
+
+ return obj
+
+ @property
def active_members(self):
return [m for m in self.members if m.activated]
@@ -276,8 +288,6 @@ class Person(db.Model):
query_class = PersonQuery
- _to_serialize = ("id", "name", "weight", "activated")
-
id = db.Column(db.Integer, primary_key=True)
project_id = db.Column(db.String(64), db.ForeignKey("project.id"))
bills = db.relationship("Bill", backref="payer")
@@ -286,6 +296,15 @@ class Person(db.Model):
weight = db.Column(db.Float, default=1)
activated = db.Column(db.Boolean, default=True)
+ @property
+ def _to_serialize(self):
+ return {
+ "id": self.id,
+ "name": self.name,
+ "weight": self.weight,
+ "activated": self.activated,
+ }
+
def has_bills(self):
"""return if the user do have bills or not"""
bills_as_ower_number = db.session.query(billowers)\
@@ -330,9 +349,6 @@ class Bill(db.Model):
query_class = BillQuery
- _to_serialize = ("id", "payer_id", "owers", "amount", "date",
- "creation_date", "what")
-
id = db.Column(db.Integer, primary_key=True)
payer_id = db.Column(db.Integer, db.ForeignKey("person.id"))
@@ -345,6 +361,18 @@ class Bill(db.Model):
archive = db.Column(db.Integer, db.ForeignKey("archive.id"))
+ @property
+ def _to_serialize(self):
+ return {
+ "id": self.id,
+ "payer_id": self.payer_id,
+ "owers": self.owers,
+ "amount": self.amount,
+ "date": self.date,
+ "creation_date": self.creation_date,
+ "what": self.what,
+ }
+
def pay_each(self):
"""Compute what each share has to pay"""
if self.owers: