def apply_propose(header, payload, state): role_admins_payload = role_transaction_pb2.ProposeAddRoleAdmin() role_admins_payload.ParseFromString(payload.content) role_admins_address = addresser.make_role_admins_address( role_id=role_admins_payload.role_id, user_id=role_admins_payload.user_id) proposal_address = addresser.make_proposal_address( object_id=role_admins_payload.role_id, related_id=role_admins_payload.user_id) state_entries = role_validator.validate_role_rel_proposal( header, role_admins_payload, role_admins_address, state) if not proposal_validator.has_no_open_proposal( state_entries=state_entries, object_id=role_admins_payload.role_id, related_id=role_admins_payload.user_id, proposal_address=proposal_address, proposal_type=proposal_state_pb2.Proposal.ADD_ROLE_ADMINS, ): raise InvalidTransaction( "There is already an open proposal for ADD_ROLE_ADMINS " "with role id {} and user id {}".format( role_admins_payload.role_id, role_admins_payload.user_id)) state_change.propose_role_action( state_entries=state_entries, header=header, payload=role_admins_payload, address=proposal_address, proposal_type=proposal_state_pb2.Proposal.ADD_ROLE_ADMINS, state=state, )
def apply_propose_remove(header, payload, state): proposal_payload = role_transaction_pb2.ProposeRemoveRoleMember() proposal_payload.ParseFromString(payload.content) role_owners_address = addresser.role.owner.address( proposal_payload.role_id, proposal_payload.user_id) proposal_address = addresser.proposal.address( object_id=proposal_payload.role_id, target_id=proposal_payload.user_id) state_entries = role_validator.validate_role_rel_proposal( header, proposal_payload, role_owners_address, state, True) if not proposal_validator.has_no_open_proposal( state_entries=state_entries, object_id=proposal_payload.role_id, related_id=proposal_payload.user_id, proposal_address=proposal_address, proposal_type=proposal_state_pb2.Proposal.REMOVE_ROLE_OWNERS, ): raise InvalidTransaction( "There is already an open proposal for REMOVE_ROLE_OWNERS " "with role id {} and user id {}".format(proposal_payload.role_id, proposal_payload.user_id)) state_change.propose_role_action( state_entries=state_entries, header=header, payload=proposal_payload, address=proposal_address, proposal_type=proposal_state_pb2.Proposal.REMOVE_ROLE_OWNERS, state=state, )
def apply_propose_remove(header, payload, state): propose = role_transaction_pb2.ProposeRemoveRoleTask() propose.ParseFromString(payload.content) state_entries = proposal_validator.validate_role_task_proposal( header, propose, state) proposal_address = addresser.proposal.address(propose.role_id, propose.task_id) state_change.propose_role_action( state_entries=state_entries, header=header, payload=propose, address=proposal_address, proposal_type=proposal_state_pb2.Proposal.REMOVE_ROLE_TASK, state=state, related_type="task_id", )