def main(): _staff = Staff(CONFIG.STAFF_INDEX) sponsor_info = get_templated_attrs(Sponsor, CONFIG.SPONSOR_INDEX) if _staff.create_sponsor(**sponsor_info): _sponsor = Sponsor(CONFIG.SPONSOR_INDEX) else: assert 0, "staff create sponsor failed!"
def __init__(self, index=None, attrs=None): if attrs: for key, val in attrs.items(): setattr(self, key, val) else: assert isinstance( index, int), "Index must be a int if attrs is None for auto attrs gen" for key, val in get_templated_attrs(type(self), index).items(): setattr(self, key, val)
def __init__(self, index=None, attrs=None): attrs = attrs or dict() if index is None: assert attrs.get( "exchange_name", ""), "Index and exchange name can't be None at the same time" index = 0 for key, val in get_templated_attrs(type(self), index).items(): if key not in attrs: attrs[key] = val setattr(self, key, attrs[key])
def main(): _staff = Staff(CONFIG.STAFF_INDEX) logger.info("========== Staff(%u) ready ==========" % CONFIG.STAFF_INDEX) with open(CUR_DIR + "/data/sponsor_logos/photo.json") as f: sponsor_logos = json.loads(f.read()) if len(sponsor_logos) != len(sponsor_items): assert "sponsor logo count:%u vs sponsors count:%u" % (len(sponsor_logos), len(sponsor_items)) for i, sponsor in enumerate(sponsor_items): info = get_templated_attrs(Sponsor, i) info["name"] = sponsor["name"] assert _staff.create_sponsor(**info), "Create sponsor:%u failed" % i s = Sponsor(i, attrs=info) print("%u ===> %s:" % (i,sponsor["name"]), s) for i, sponsor in enumerate(sponsor_items): for sp in _staff.list_sponsors(): if sp.name == sponsor["name"]: info = get_templated_attrs(Sponsor, i) print("sponsor_id:", sp.id) _staff.update_sponsor(sponsor_id=sp.id, logo=sponsor_logos[i]["key"], website=sponsor["official_url"], summary=sponsor["summary"], phone=info["phone"])
def get_project(self, index=None, project_name=None): assert isinstance(index, int) or project_name, "Index or project name must be set one at least" if not project_name: project_name = get_templated_attrs(Project, index)["project_name"] for prj in self.list_projects(): print("prj[%s] vs project[%s]" %(prj.project_name, project_name)) if prj.project_name == project_name: details = self.get_details(prj.project_id) _project = Project(attrs=dict( project_name=details.project_info.project_name, coin_id=details.coin_info.id, project_id=details.project_info.id, short_name=details.coin_info.short_name, full_name=details.coin_info.full_name, sponsor_id=details.sponsor_info.sponsor_id)) return _project
def create_project(self, index=None, attrs=None): if not attrs: _attrs = get_templated_attrs(Project, index) else: _attrs = attrs.copy() project_name = _attrs.get("project_name") full_name = _attrs.get("full_name") short_name = _attrs.get("short_name") rsp = self.api_project.applications_check_project_name_post(project_name=project_name) print("check project name: ", rsp.result) print("project_name:%s full_name:%s short_name:%s" % (project_name, full_name, short_name)) payload = { 'project_name': project_name, 'description': _attrs.get("description", "") or f'{project_name} go go go', 'official_website': attrs.get("official_website", "") or f'www.{project_name}.com', 'white_paper_key': _attrs.get("white_paper_key", "") or f'1234555', 'area_code': attrs.get("area_code", "") or '+86', 'project_poster_key': attrs.get("project_poster_key", "") or "1234555", 'cellphone': attrs.get("cellphone", "") or '13510022445', 'telephone': attrs.get("telephone", "") or '12874846', 'email': attrs.get("email", "") or '*****@*****.**', 'full_name': full_name, 'short_name': short_name, 'issue_price': attrs.get("issue_price", "") or '2.24545', 'issued_volume': attrs.get("issued_volume", "") or '1000000', 'circulation_volume': attrs.get("circulation_volume", "") or '1000000', 'issued_date': attrs.get("issued_date", "") or '2018-08-08', "coin_logo_key": attrs.get("coin_logo_key", "") or PHOTO_KEY, 'blockchain_type': attrs.get("blockchain_type", "") or 'public_chain', 'data_link': attrs.get("data_link", "") or f'www.{project_name}.com', 'block_browser': attrs.get("block_browser", "") or f'http://coin.{project_name}.com' } req = ApplicationRequest(**payload) # 申请项目 try: res = self.api_project.applications_post(body=req) except ApiException as e: if e.status == 400 and json.loads(e.body)["message"] == "项目名称已经存在": logger.warn("项目正在申请中,属于自己的项目,但是还未完成") application_id = self.query_application_id(project_name=project_name) _attrs["application_id"] = application_id else: raise else: _attrs["application_id"] = res.id return Project(0, attrs=_attrs)
def main(): logger.info("========== Init USDT Start ==========") _staff = Staff(CONFIG.STAFF_INDEX) logger.info("========== Staff(%u) ready ==========" % CONFIG.STAFF_INDEX) _main = Main(CONFIG.MAIN_INDEX) _main.request_individual_cert() _staff.verify_individual(identity=_main.identity, approval="ACCEPTED") logger.info("========== Main(%u) ready ==========" % CONFIG.MAIN_INDEX) sponsor_info = get_templated_attrs(Sponsor, CONFIG.SPONSOR_INDEX) logger.info("template result: ", sponsor_info) if _staff.create_sponsor(**sponsor_info): _sponsor = Sponsor(CONFIG.SPONSOR_INDEX) else: assert 0, "staff create sponsor failed!" logger.info("========== Sponsor(%u) Done ==========" % CONFIG.SPONSOR_INDEX) _venture = Venture(1) _venture.request_individual_cert() _staff.verify_individual(identity=_venture.identity, approval="ACCEPTED") assert _venture.audit_accepted() logger.info("========== Venture(%u) Done ==========" % CONFIG.VENTURE_INDEX) project_name = "泰达币" full_name="Tether" short_name = "USDT" USDT_PRJ = { 'project_name': project_name, 'description': f'USDT almost is USD', 'official_website': 'https://tether.to/', 'white_paper_key': f'1234555', 'area_code': '+86', 'project_poster_key': "1234555", 'cellphone': '13510022445', 'telephone': '12874846', 'email': '*****@*****.**', 'full_name': full_name, 'short_name': short_name, 'issue_price': '2.24545', 'issued_volume': '1000000', 'circulation_volume': '1000000', 'issued_date': '2018-08-08', "coin_logo_key": PHOTO_KEY, 'blockchain_type': 'public_chain', 'data_link': 'https://tether.to/', 'block_browser': 'https://omniexplorer.info' } _project = _venture.create_project(attrs=USDT_PRJ) logger.info("========== Project(%u) %s: %s(%s) Done ==========", CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name) sponsor_id = _venture.query_sponsor_id(_sponsor.name) logger.info("sponsor id:%s ============>" % sponsor_id) for app in _venture.list_applications(): _venture.set_sponsor(sponsor_id, app.id) app_id = _sponsor.query_project_application_id(_project.project_name) if app_id: _sponsor.sponsor_project(app_id) _project = _venture.update_project_info(CONFIG.PROJECT_INDEX) logger.info("========== Sponsor(%u) $$$ Project(%u) %s: %s(%s) Done ==========" % (CONFIG.SPONSOR_INDEX, CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name)) for config in _staff.get_coins_config_list(): if config.coin_id == _project.coin_id: print("%s config id:%s" % (_project.coin_id, config.id)) _staff.init_coin(usdt_price=1, config_id=config.id) _staff.config_coin_rechargable(config.id, rechargeable=True) _staff.config_coin_withdrawable(config.id, withdrawable=True) logger.info("========== Init Project(%u) %s: %s(%s) Done ==========" % (CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name)) logger.info("========== Init USDT End ==========")
def setup(): CONFIG = Config() _staff = Staff(CONFIG.STAFF_INDEX) _tenant = Tenant(CONFIG.TENANT_INDEX) _venture = Venture(CONFIG.VENTURE_INDEX) _main = Main(CONFIG.MAIN_INDEX) _tenant.request_individual_cert() _venture.request_individual_cert() _main.request_individual_cert() _staff.verify_individual(identity=_tenant.identity, approval="approved") rsp = _staff.get_indiv_audits_result(account_id=_tenant.account_id) assert rsp.certification_status == "ACCEPTED" _staff.verify_individual(identity=_venture.identity, approval="approved") rsp = _staff.get_indiv_audits_result(account_id=_venture.account_id) assert rsp.certification_status == "ACCEPTED" sponsor_info = get_templated_attrs(Sponsor, CONFIG.SPONSOR_INDEX) if _staff.create_sponsor(**sponsor_info): _sponsor = Sponsor(CONFIG.SPONSOR_INDEX) else: assert 0, "staff create sponsor failed!" _sponsor = Sponsor(CONFIG.SPONSOR_INDEX) # =================== 创建 tags ======================== for item in _staff.list_tags(): if item.name == CONFIG.MY_TAG: break else: _staff.create_tag(tag=CONFIG.MY_TAG, other_language=[{ "key": "英语", "value": "public_chain" }]) logger.info("========== tag < %s > ready ==========" % CONFIG.MY_TAG) # =================== 创建 交易所 ======================== _exchange = _tenant.get_exchange() if not _exchange: _exchange = _tenant.create_exchange() audits = _staff.query_audits_tenant(uid=_tenant.account_id, status="audit") for audit in audits: _staff.audits_tenants(task_id=audit.id, approval="approved") result = _staff.get_tenant_indiv_audits_result(audit_id=audit.id) assert result.audit_status == "approved" re_audits = _staff.query_audits_tenant(uid=_tenant.account_id, status="re_audit") for re_audit in re_audits: _staff.reaudits_tenants(task_id=re_audit.id, approval="approved") result = _staff.get_tenant_indiv_re_audits_result(audit_id=re_audit.id) assert result.re_status == "approved" if _tenant.is_exchange_approved(): _exchange = _tenant.update_exchange_info() else: assert 0, "exchange should be approved here" logger.info("========== exchange_id:%s ready ==========" % _exchange.exchange_id) # ================ 创建项目 ============================= _project = _venture.get_project(CONFIG.PROJECT_INDEX) if not _project: _project = _venture.create_project(CONFIG.PROJECT_INDEX) assert _project logger.info("========== Project(%u) %s: %s(%s) Done ==========", CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name) # ======================= sponsor 保荐项目 ======================== sponsor_id = _venture.query_sponsor_id(_sponsor.name) logger.info("sponsor id:%s ============>" % sponsor_id) for app in _venture.list_applications(): _venture.set_sponsor(sponsor_id, app.id) app_id = _sponsor.query_project_application_id(_project.project_name) if app_id: _sponsor.sponsor_project(app_id) _project = _venture.update_project_info(CONFIG.PROJECT_INDEX) logger.info( "========== Sponsor(%u) $$$ Project(%u) %s: %s(%s) Done ==========" % (CONFIG.SPONSOR_INDEX, CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name)) # ========================= staff 初始化项目 ============================ for config in _staff.get_coins_config_list(): if config.coin_id == _project.coin_id: print("%s config id:%s" % (_project.coin_id, config.id)) _staff.init_coin(usdt_price=1, config_id=config.id) _staff.config_coin_rechargable(config.id, rechargeable=True) _staff.config_coin_withdrawable(config.id, withdrawable=True) logger.info("========== Init Project(%u) %s: %s(%s) Done ==========" % (CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name)) return _staff, _tenant, _venture, _project, _exchange, CONFIG
def setup(): logger.info("++ Multi Market ++") _staff = Staff(CONFIG.STAFF_INDEX) logger.info("========== Staff(%u) ready ==========" % CONFIG.STAFF_INDEX) for item in _staff.list_tags(): if item.name == CONFIG.MY_TAG: break else: _staff.create_tag(tag=CONFIG.MY_TAG, other_language=[{ "key": "英语", "value": "public_chain" }]) logger.info("========== tag < %s > ready ==========" % CONFIG.MY_TAG) _main = Main(CONFIG.MAIN_INDEX) _main.request_individual_cert() _staff.verify_individual(identity=_main.identity, approval="approved") logger.info("========== Main(%u) ready ==========" % CONFIG.MAIN_INDEX) sponsor_info = get_templated_attrs(Sponsor, CONFIG.SPONSOR_INDEX) logger.info("template result: ", sponsor_info) if _staff.create_sponsor(**sponsor_info): _sponsor = Sponsor(CONFIG.SPONSOR_INDEX) else: assert 0, "staff create sponsor failed!" logger.info("========== Sponsor(%u) Done ==========" % CONFIG.SPONSOR_INDEX) _tenant = Tenant(CONFIG.TENANT_INDEX) _tenant.request_individual_cert() _staff.verify_individual(identity=_tenant.identity, approval="approved") assert _tenant.audit_accepted() logger.info("========== Tenant(%u) Create Done ==========" % CONFIG.TENANT_INDEX) _exchange = _tenant.get_exchange() if not _exchange: _exchange = _tenant.create_exchange() audits = _staff.query_audits_tenant(uid=_tenant.account_id, status="audit") for audit in audits: _staff.audits_tenants(task_id=audit.id, approval="approved") result = _staff.get_tenant_indiv_audits_result(audit_id=audit.id) assert result.audit_status == "approved" re_audits = _staff.query_audits_tenant(uid=_tenant.account_id, status="re_audit") for re_audit in re_audits: _staff.reaudits_tenants(task_id=re_audit.id, approval="approved") result = _staff.get_tenant_indiv_re_audits_result(audit_id=re_audit.id) assert result.re_status == "approved" if _tenant.is_exchange_approved(): _exchange = _tenant.update_exchange_info() else: assert 0, "exchange should be approved here" logger.info("========== exchange_id:%s ready ==========" % (_exchange.exchange_id)) _venture = Venture(CONFIG.VENTURE_INDEX) _venture.request_individual_cert() _staff.verify_individual(identity=_venture.identity, approval="approved") assert _venture.audit_accepted() logger.info("========== Venture(%u) Done ==========" % CONFIG.VENTURE_INDEX) _project = _venture.get_project(CONFIG.PROJECT_INDEX) if not _project: _project = _venture.create_project(CONFIG.PROJECT_INDEX) logger.info("========== Project(%u) %s: %s(%s) Done ==========", CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name) sponsor_id = _venture.query_sponsor_id(_sponsor.name) logger.info("sponsor id:%s ============>" % sponsor_id) for app in _venture.list_applications(): _venture.set_sponsor(sponsor_id, app.id) app_id = _sponsor.query_project_application_id(_project.project_name) if app_id: _sponsor.sponsor_project(app_id) _project = _venture.update_project_info(CONFIG.PROJECT_INDEX) logger.info( "========== Sponsor(%u) $$$ Project(%u) %s: %s(%s) Done ==========" % (CONFIG.SPONSOR_INDEX, CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name)) for config in _staff.get_coins_config_list(): if config.coin_id == _project.coin_id: print("%s config id:%s" % (_project.coin_id, config.id)) _staff.init_coin(usdt_price=1, config_id=config.id) _staff.config_coin_rechargable(config.id, rechargeable=True) _staff.config_coin_withdrawable(config.id, withdrawable=True) logger.info("========== Init Project(%u) %s: %s(%s) Done ==========" % (CONFIG.PROJECT_INDEX, _project.project_name, _project.full_name, _project.short_name)) _venture.contacts(project_id=_project.project_id, exchange_id=_exchange.exchange_id, sponsor="venture") for contact in _tenant.list_contacts(_exchange.exchange_id, status="pending"): print("contact_id ====================>", contact.id) _tenant.contact_accept(contact_id=contact.id, status="accepted") logger.info("========== Venture(%u) contact Tenant(%u) Done ==========" % (CONFIG.VENTURE_INDEX, CONFIG.TENANT_INDEX)) usdt_id = _venture.get_usdt_coin_id() _market = _tenant.get_market(buy=usdt_id, sell=_project.coin_id) _faucet = Faucet(_tenant.token_mgr.token, _tenant.api_account.api_client.configuration.host) if not _market: _faucet.free_charge(coin_id=_venture.get_usdt_coin_id(), amount=10000000000) logger.info( "========== Faucet(%s) charge Tenant(%u) Done ==========" % (CONFIG.FAUCET_INDEX, CONFIG.TENANT_INDEX)) _market, order_id = _tenant.create_market(usdt_id, _project.coin_id, "6", "0") logger.info("========== Tenant(%u) create Market(%s) Done ==========" % (CONFIG.TENANT_INDEX, _market.market_id)) logger.info("========== Multi Market End ==========") return _staff, _tenant, _venture, _sponsor, _faucet, _exchange