def __init__(self, service, tenant, all_component_one_model=None, only_one_component=False, install_from_cloud=False): self.service = service self.tenant = tenant self.service_source = service_source_repo.get_service_source( service.tenant_id, service.service_id) self.current_version = self.service_source.version self.install_from_cloud = False self.market_name = None self.only_one_component = only_one_component self.market = None self.all_component_one_model = all_component_one_model if self.service_source and self.service_source.extend_info: extend_info = json.loads(self.service_source.extend_info) if extend_info and extend_info.get("install_from_cloud", False): self.install_from_cloud = True if self.install_from_cloud: self.market_name = extend_info.get("market_name", None) self.market = app_market_repo.get_app_market_by_name( tenant.enterprise_id, self.market_name, raise_exception=True)
def create_app_market(self, data): exit_market = app_market_repo.get_app_market_by_name( enterprise_id=data["enterprise_id"], name=data["name"]) if exit_market: raise ServiceHandleException(msg="name exist", msg_show="名称已存在", status_code=400) return app_market_repo.create_app_market(**data)
def __init__(self, service, tenant, all_component_one_model=None, only_one_component=False, install_from_cloud=False): self.service = service self.tenant = tenant self.service_source = service_source_repo.get_service_source(service.tenant_id, service.service_id) self.current_version = self.service_source.version self.install_from_cloud = self.service_source.is_install_from_cloud() self.market_name = self.service_source.get_market_name() self.only_one_component = only_one_component self.market = None self.all_component_one_model = all_component_one_model if self.install_from_cloud and self.market_name: self.market = app_market_repo.get_app_market_by_name(tenant.enterprise_id, self.market_name, raise_exception=True)
def batch_create_app_market(self, eid, data): if data is not None: for dt in data: exist_market = app_market_repo.get_app_market_by_name( enterprise_id=eid, name=dt["name"]) if exist_market: app_market_repo.update_access_key( enterprise_id=eid, name=dt["name"], access_key=dt["access_key"]) continue app_market_repo.create_app_market(**dt) return self.get_app_markets(eid, extend="true")
def update_app_market(self, app_market, data): exit_market = app_market_repo.get_app_market_by_name( enterprise_id=data["enterprise_id"], name=data["name"]) if exit_market: if exit_market.ID != app_market.ID: raise ServiceHandleException(msg="name exist", msg_show="名称已存在", status_code=400) app_market.name = data["name"] app_market.type = data["type"] app_market.enterprise_id = data["enterprise_id"] app_market.url = data["url"] app_market.access_key = data["access_key"] app_market.domain = data["domain"] app_market.save() return app_market
def _app_template(enterprise_id, app_model_key, version, app_template_source): if not app_template_source.is_install_from_cloud(): _, app_version = rainbond_app_repo.get_rainbond_app_and_version(enterprise_id, app_model_key, version) else: market = app_market_repo.get_app_market_by_name( enterprise_id, app_template_source.get_market_name(), raise_exception=True) _, app_version = app_market_service.cloud_app_model_to_db_model(market, app_model_key, version) if not app_version: raise AbortRequest("app template not found", "找不到应用模板", status_code=404, error_code=404) try: app_template = json.loads(app_version.app_template) app_template["update_time"] = app_version.update_time return app_template except JSONDecodeError: raise AbortRequest("invalid app template", "该版本应用模板已损坏, 无法升级")
def __init__(self, service, tenant, install_from_cloud=False): self.service = service self.tenant = tenant self.current_version = None self.current_app = None self.template = None self.service_source = service_source_repo.get_service_source(service.tenant_id, service.service_id) self.install_from_cloud = False self.market_name = None self.market = None if self.service_source and self.service_source.extend_info: self.current_version_str = self.service_source.version extend_info = json.loads(self.service_source.extend_info) if extend_info and extend_info.get("install_from_cloud", False): self.install_from_cloud = True if self.install_from_cloud: self.market_name = extend_info.get("market_name", None) self.market = app_market_repo.get_app_market_by_name( tenant.enterprise_id, self.market_name, raise_exception=True) self.__get_current_app_and_version()
def get_app_market(self, enterprise_id, market_name, extend="false", raise_exception=False): market = app_market_repo.get_app_market_by_name( enterprise_id, market_name, raise_exception) dt = { "access_key": market.access_key, "name": market.name, "url": market.url, "type": market.type, "domain": market.domain, "ID": market.ID, } if extend == "true": try: extend_info = app_store.get_market(market) market.description = extend_info.description market.alias = extend_info.name market.status = extend_info.status market.access_actions = extend_info.access_actions except Exception as e: logger.debug(e) market.description = None market.alias = None market.status = 0 market.access_actions = [] if raise_exception: if market.status == 0: raise ServiceHandleException(msg="call market error", msg_show="应用商店状态异常") dt.update({ "description": market.description, "alias": market.alias, "status": market.status, "access_actions": market.access_actions, }) return dt, market
def get_app_market_by_name(self, enterprise_id, name, raise_exception=False): return app_market_repo.get_app_market_by_name( enterprise_id, name, raise_exception=raise_exception)