Skip to content
Snippets Groups Projects
Commit 4a3ada43 authored by Moul's avatar Moul
Browse files

[mod] #178: Make membership_type argument optionnal and by default value 'IN'

parent ad73122e
No related branches found
No related tags found
No related merge requests found
Pipeline #13015 failed
......@@ -313,17 +313,23 @@ class Block(Document):
]
# joiners: List[Membership]
arguments["joiners"] = [
Membership.from_inline("IN", i + "\n", version=version, currency=currency)
Membership.from_inline(
i + "\n", version=version, currency=currency, membership_type="IN"
)
for i in arguments["joiners"]
]
# actives: List[Membership]
arguments["actives"] = [
Membership.from_inline("IN", i + "\n", version=version, currency=currency)
Membership.from_inline(
i + "\n", version=version, currency=currency, membership_type="IN"
)
for i in arguments["actives"]
]
# leavers: List[Membership]
arguments["leavers"] = [
Membership.from_inline("OUT", i + "\n", version=version, currency=currency)
Membership.from_inline(
i + "\n", version=version, currency=currency, membership_type="OUT"
)
for i in arguments["leavers"]
]
# revokations: List[Revocation]
......@@ -448,7 +454,7 @@ class Block(Document):
n += 1
while Block.re_actives.match(lines[n]) is None:
membership = Membership.from_inline(
"IN", lines[n], version=version, currency=currency
lines[n], version=version, currency=currency, membership_type="IN"
)
joiners.append(membership)
n += 1
......@@ -457,7 +463,7 @@ class Block(Document):
n += 1
while Block.re_leavers.match(lines[n]) is None:
membership = Membership.from_inline(
"IN", lines[n], version=version, currency=currency
lines[n], version=version, currency=currency, membership_type="IN"
)
actives.append(membership)
n += 1
......@@ -466,7 +472,7 @@ class Block(Document):
n += 1
while Block.re_revoked.match(lines[n]) is None:
membership = Membership.from_inline(
"OUT", lines[n], version=version, currency=currency
lines[n], version=version, currency=currency, membership_type="OUT"
)
leavers.append(membership)
n += 1
......
......@@ -86,24 +86,24 @@ class Membership(Document):
self,
issuer: str,
membership_ts: BlockUID,
membership_type: str,
uid: str,
identity_ts: BlockUID,
signing_key: SigningKey = None,
version: int = VERSION,
currency: str = G1_CURRENCY_CODENAME,
membership_type: str = "IN",
) -> None:
"""
Create a membership document
:param issuer: Public key of the issuer
:param membership_ts: BlockUID of this membership
:param membership_type: "IN" or "OUT" to enter or quit the community
:param uid: Unique identifier of the identity
:param identity_ts: BlockUID of the identity
:param signing_key: SigningKey instance to sign the document (default=None)
:param version: Document version (default=membership.VERSION)
:param currency: Currency codename (default=constants.CURRENCY_CODENAME_G1)
:param membership_type: "IN" or "OUT" to enter or quit the community. Default "IN"
"""
super().__init__(version, currency)
......@@ -119,18 +119,18 @@ class Membership(Document):
@classmethod
def from_inline(
cls: Type[MembershipType],
membership_type: str,
inline: str,
version: int = VERSION,
currency: str = G1_CURRENCY_CODENAME,
membership_type: str = "IN",
) -> MembershipType:
"""
Return Membership instance from inline format
:param membership_type: "IN" or "OUT" to enter or exit membership
:param inline: Inline string format
:param version: Document version (default=membership.VERSION)
:param currency: Currency codename (default=constants.CURRENCY_CODENAME_G1)
:param membership_type: "IN" or "OUT" to enter or exit membership. Default "IN"
:return:
"""
data = Membership.re_inline.match(inline)
......@@ -144,11 +144,11 @@ class Membership(Document):
membership = cls(
issuer,
membership_blockstamp,
membership_type,
uid,
identity_blockstamp,
version=version,
currency=currency,
membership_type=membership_type,
)
# return membership with signature
......@@ -200,11 +200,11 @@ class Membership(Document):
membership = cls(
issuer,
membership_blockstamp,
membership_type,
uid,
identity_blockstamp,
version=version,
currency=currency,
membership_type=membership_type,
)
# return membership with signature
......
......@@ -33,18 +33,18 @@ BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443"
def get_membership_document(
membership_type: str,
current_block: dict,
identity: dict,
key: SigningKey,
membership_type: str = "IN",
) -> Membership:
"""
Get a Membership document
:param membership_type: "IN" to ask for membership or "OUT" to cancel membership
:param current_block: Current block data
:param identity: identity card from /wot/lookup
:param key: cryptographic key to sign documents
:param membership_type: "IN" to ask for membership or "OUT" to cancel membership. Default "IN"
:rtype: Membership
"""
......@@ -60,11 +60,11 @@ def get_membership_document(
membership = Membership(
issuer=key.pubkey,
membership_ts=timestamp,
membership_type=membership_type,
uid=uid,
identity_ts=identity_timestamp,
signing_key=key,
currency=current_block["currency"],
membership_type=membership_type,
)
return membership
......@@ -99,7 +99,7 @@ def send_membership():
identity = identities["results"][0]
# create a membership demand document
membership = get_membership_document("IN", current_block, identity, key)
membership = get_membership_document(current_block, identity, key)
# send the membership signed raw document to the node
try:
......
......@@ -36,7 +36,7 @@ dkaXIiCYUJtCg8Feh/BKvPYf4uFH9CJ/zY6J4MlA9BsjmcMe4YAblvNt/gJy31b1aGq3ue3h14mLMCu8
class TestMembership(unittest.TestCase):
def test_frominline(self):
membership = Membership.from_inline(
"IN", membership_inline, version=2, currency="zeta_brousouf"
membership_inline, version=2, currency="zeta_brousouf"
)
self.assertEqual(
membership.issuer, "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment