From 63b9b060c74a3afae4c6a081a62f797cc8de567f Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Wed, 21 Sep 2016 04:23:05 +0200 Subject: [PATCH] Enhance identity entity --- src/sakia/data/entities/identity.py | 6 ++-- src/sakia/data/repositories/identities.py | 8 +++-- src/sakia/data/repositories/meta.sql | 6 ++-- .../tests/unit/data/test_identies_repo.py | 33 ++++++++++++------- 4 files changed, 34 insertions(+), 19 deletions(-) diff --git a/src/sakia/data/entities/identity.py b/src/sakia/data/entities/identity.py index 7cbbc1ec..c3cf174c 100644 --- a/src/sakia/data/entities/identity.py +++ b/src/sakia/data/entities/identity.py @@ -10,8 +10,10 @@ class Identity: blockstamp = attr.ib(convert=block_uid, default=BlockUID.empty()) signature = attr.ib(convert=str, default="", cmp=False) timestamp = attr.ib(convert=int, default=0, cmp=False) - written = attr.ib(validator=attr.validators.instance_of(bool), default=False, cmp=False) - revoked = attr.ib(validator=attr.validators.instance_of(bool), default=False, cmp=False) + written_on = attr.ib(convert=block_uid, default=BlockUID.empty(), cmp=False) + revoked_on = attr.ib(convert=block_uid, default=BlockUID.empty(), cmp=False) member = attr.ib(validator=attr.validators.instance_of(bool), default=False, cmp=False) membership_buid = attr.ib(convert=block_uid, default=BlockUID.empty(), cmp=False) membership_timestamp = attr.ib(convert=int, default=0, cmp=False) + membership_type = attr.ib(convert=str, default='', validator=lambda s, a, t: t in ('', 'IN', 'OUT'), cmp=False) + membership_written_on = attr.ib(convert=block_uid, default=BlockUID.empty(), cmp=False) diff --git a/src/sakia/data/repositories/identities.py b/src/sakia/data/repositories/identities.py index d4ed89ba..3af88b1a 100644 --- a/src/sakia/data/repositories/identities.py +++ b/src/sakia/data/repositories/identities.py @@ -31,11 +31,13 @@ class IdentitiesRepo: self._conn.execute("""UPDATE identities SET signature=?, ts=?, - written=?, - revoked=?, + written_on=?, + revoked_on=?, member=?, ms_buid=?, - ms_timestamp=? + ms_timestamp=?, + ms_written_on=?, + ms_type=? WHERE currency=? AND pubkey=? AND diff --git a/src/sakia/data/repositories/meta.sql b/src/sakia/data/repositories/meta.sql index e82001c3..dc59befe 100644 --- a/src/sakia/data/repositories/meta.sql +++ b/src/sakia/data/repositories/meta.sql @@ -6,11 +6,13 @@ CREATE TABLE IF NOT EXISTS identities( blockstamp VARCHAR(100), signature VARCHAR(100), ts INT, - written BOOLEAN, - revoked BOOLEAN, + written_on VARCHAR(100), + revoked_on VARCHAR(100), member BOOLEAN, ms_buid VARCHAR(100), ms_timestamp INT, + ms_written_on VARCHAR(100), + ms_type VARCHAR(5), PRIMARY KEY (currency, pubkey, uid, blockstamp) ); diff --git a/src/sakia/tests/unit/data/test_identies_repo.py b/src/sakia/tests/unit/data/test_identies_repo.py index a40f7ec1..a4abbd16 100644 --- a/src/sakia/tests/unit/data/test_identies_repo.py +++ b/src/sakia/tests/unit/data/test_identies_repo.py @@ -25,11 +25,13 @@ class TestIdentitiesRepo(unittest.TestCase): "20-7518C700E78B56CC21FB1DDC6CBAB24E0FACC9A798F5ED8736EA007F38617D67", "H41/8OGV2W4CLKbE35kk5t1HJQsb3jEM0/QGLUf80CwJvGZf3HvVCcNtHPUFoUBKEDQO9mPK3KJkqOoxHpqHCw==", 1473108382, - False, - False, + None, + None, False, None, - 0)) + 0, + '', + None)) identity = identities_repo.get_one(currency="testcurrency", pubkey="7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ", uid="john", @@ -46,6 +48,7 @@ class TestIdentitiesRepo(unittest.TestCase): self.assertEqual(identity.member, False) self.assertEqual(identity.membership_buid, BlockUID.empty()) self.assertEqual(identity.membership_timestamp, 0) + self.assertEqual(identity.membership_written_on, BlockUID.empty()) identities_repo.drop(identity) identity = identities_repo.get_one(currency="testcurrency", pubkey="7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ", @@ -65,21 +68,25 @@ class TestIdentitiesRepo(unittest.TestCase): "20-7518C700E78B56CC21FB1DDC6CBAB24E0FACC9A798F5ED8736EA007F38617D67", "H41/8OGV2W4CLKbE35kk5t1HJQsb3jEM0/QGLUf80CwJvGZf3HvVCcNtHPUFoUBKEDQO9mPK3KJkqOoxHpqHCw==", 1473108382, - False, - False, + None, + None, False, None, - 0)) + 0, + '', + None)) identities_repo.insert(Identity("testcurrency", "FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn", "doe", "101-BAD49448A1AD73C978CEDCB8F137D20A5715EBAA739DAEF76B1E28EE67B2C00C", "H41/8OGV2W4CLKbE35kk5t1HJQsb3jEM0/QGLUf80CwJvGZf3HvVCcNtHPUFoUBKEDQO9mPK3KJkqOoxHpqHCw==", 1455433535, - False, - False, + None, + None, False, None, - 0)) + 0, + '', + None)) identities = identities_repo.get_all(currency="testcurrency") self.assertIn("testcurrency", [i.currency for i in identities]) self.assertIn("john", [i.uid for i in identities]) @@ -95,11 +102,13 @@ class TestIdentitiesRepo(unittest.TestCase): "20-7518C700E78B56CC21FB1DDC6CBAB24E0FACC9A798F5ED8736EA007F38617D67", "H41/8OGV2W4CLKbE35kk5t1HJQsb3jEM0/QGLUf80CwJvGZf3HvVCcNtHPUFoUBKEDQO9mPK3KJkqOoxHpqHCw==", 1473108382, - False, - False, + None, + None, False, None, - 0) + 0, + '', + None) identities_repo.insert(identity) identity.member = True identities_repo.update(identity) -- GitLab