diff --git a/ihatemoney/models.py b/ihatemoney/models.py index b3d1395e..3c36e76c 100644 --- a/ihatemoney/models.py +++ b/ihatemoney/models.py @@ -22,15 +22,21 @@ class Project(db.Model): @property def _to_serialize(self): - return { + obj = { "id": self.id, "name": self.name, "contact_email": self.contact_email, - "members": self.members, - "active_members": self.active_members, - "balance": self.balance, + "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] diff --git a/ihatemoney/tests/tests.py b/ihatemoney/tests/tests.py index 17b3a8d9..25f48ac9 100644 --- a/ihatemoney/tests/tests.py +++ b/ihatemoney/tests/tests.py @@ -1084,12 +1084,10 @@ class APITestCase(IhatemoneyTestCase): self.assertTrue(200, resp.status_code) expected = { - "active_members": [], + "members": [], "name": "raclette", "contact_email": "raclette@notmyidea.org", - "members": [], "id": "raclette", - "balance": {}, } decoded_resp = json.loads(resp.data.decode('utf-8')) self.assertDictEqual(decoded_resp, expected) @@ -1108,12 +1106,10 @@ class APITestCase(IhatemoneyTestCase): self.assertEqual(200, resp.status_code) expected = { - "active_members": [], "name": "The raclette party", "contact_email": "yeah@notmyidea.org", "members": [], "id": "raclette", - "balance": {}, } decoded_resp = json.loads(resp.data.decode('utf-8')) self.assertDictEqual(decoded_resp, expected) @@ -1449,21 +1445,15 @@ class APITestCase(IhatemoneyTestCase): headers=self.get_auth("raclette")) expected = { - "active_members": [ - {"activated": True, "id": 1, "name": "alexis", "weight": 1.0}, - {"activated": True, "id": 2, "name": "freddy familly", "weight": 4.0}, - {"activated": True, "id": 3, "name": "arnaud", "weight": 1.0} + "members": [ + {"activated": True, "id": 1, "name": "alexis", "weight": 1.0, "balance": 20.0}, + {"activated": True, "id": 2, "name": "freddy familly", "weight": 4.0, "balance": -20.0}, + {"activated": True, "id": 3, "name": "arnaud", "weight": 1.0, "balance": 0}, ], - "balance": {"1": 20.0, "2": -20.0, "3": 0}, "contact_email": "raclette@notmyidea.org", "id": "raclette", - - "members": [ - {"activated": True, "id": 1, "name": "alexis", "weight": 1.0}, - {"activated": True, "id": 2, "name": "freddy familly", "weight": 4.0}, - {"activated": True, "id": 3, "name": "arnaud", "weight": 1.0} - ], - "name": "raclette"} + "name": "raclette", + } self.assertStatus(200, req) decoded_req = json.loads(req.data.decode('utf-8'))