diff options
Diffstat (limited to 'ihatemoney/models.py')
| -rw-r--r-- | ihatemoney/models.py | 48 |
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: |
