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