def signup(username, password) -> Tuple[Agency, Signer_Impl]: try: signer = create_account(username, password) agency = Agency(username = username, password = password) contract_addr = deploy_contract("Agency", signer = signer) agency.contract_addr = contract_addr agency.account_addr = str(signer.keypair.address) agency.account_pub = str(signer.keypair.public_key) agency.account_priv = str(signer.keypair.private_key) privkey, pubkey = gen_rsakey() agency.envelope_pub = pubkey agency.envelope_priv = privkey managementAddr = db.session.query(Contracts).filter(Contracts.name == "Management").first().addr EngineerListAddr = db.session.query(Contracts).filter(Contracts.name == "EngineerList").first().addr creditAddr = db.session.query(Contracts).filter(Contracts.name == "Credit").first().addr call_contract(contract_addr, "Agency", "setEngListAddr", args = [to_checksum_address(EngineerListAddr)], signer = signer) call_contract(contract_addr, "Agency", "setCreditAddr", args = [to_checksum_address(creditAddr)], signer = signer) agency.engineer_list_addr = EngineerListAddr # call_contract2(managementAddr, "Management", "addAgency", # args = [ # username, # to_checksum_address(agency.account_addr), # to_checksum_address(agency.contract_addr), # agency.envelope_pub, "" ], signer = signer) call_contract(managementAddr, "Management", "addAgency", args = [ username, to_checksum_address(agency.account_addr), to_checksum_address(agency.contract_addr), agency.envelope_pub, ""], signer = signer) db.session.add(agency) db.session.commit() except Exception: traceback.print_exc() db.session.rollback() return None, None return agency, signer