Source code for graphenecommon.committee
# -*- coding: utf-8 -*-
from .blockchainobject import BlockchainObject, BlockchainObjects
from .exceptions import CommitteeMemberDoesNotExistsException
from .instance import AbstractBlockchainInstanceProvider
class Committee(BlockchainObject, AbstractBlockchainInstanceProvider):
""" Read data about a Committee Member in the chain
:param str member: Name of the Committee Member
:param instance blockchain_instance: instance to use when accesing a RPC
:param bool lazy: Use lazy loading
"""
def __init__(self, *args, **kwargs):
self.define_classes()
assert self.type_id
assert self.account_class
BlockchainObject.__init__(self, *args, **kwargs)
[docs] def refresh(self):
if self.test_valid_objectid(self.identifier):
_, i, _ = self.identifier.split(".")
if int(i) == 2:
account = self.account_class(
self.identifier, blockchain_instance=self.blockchain
)
member = self.blockchain.rpc.get_committee_member_by_account(
account["id"]
)
elif int(i) == 5:
member = self.blockchain.rpc.get_object(self.identifier)
else:
raise CommitteeMemberDoesNotExistsException
else:
# maybe identifier is an account name
account = self.account_class(
self.identifier, blockchain_instance=self.blockchain
)
member = self.blockchain.rpc.get_committee_member_by_account(account["id"])
if not member:
raise CommitteeMemberDoesNotExistsException
super(Committee, self).__init__(member, blockchain_instance=self.blockchain)
@property
def account_id(self):
return self.get("committee_member_account")
@property
def account(self):
return self.account_class(self.account_id, blockchain_instance=self.blockchain)