def get_or_create_upgrade_record(self, tenant_id, group_id, group_key, upgrade_group_id, is_from_cloud, market_name): """获取或创建升级记录""" recode_kwargs = { "tenant_id": tenant_id, "group_id": group_id, "group_key": group_key, "create_time": datetime.now(), "is_from_cloud": is_from_cloud, "market_name": market_name, "upgrade_group_id": upgrade_group_id, } try: return upgrade_repo.get_app_not_upgrade_record(status__lt=UpgradeStatus.UPGRADED.value, **recode_kwargs) except AppUpgradeRecord.DoesNotExist: from console.services.group_service import group_service tenant = Tenants.objects.get(tenant_id=tenant_id) service_group_keys = group_service.get_group_service_sources(group_id).values_list('group_key', flat=True) if group_key in set(service_group_keys or []): if not is_from_cloud: app = rainbond_app_repo.get_rainbond_app_qs_by_key(tenant.enterprise_id, group_key) if not app: raise ServiceHandleException( msg="the rainbond app is not in the group", msg_show="该应用中没有这个云市组件", status_code=404) app_name = app.app_name else: market = app_market_service.get_app_market_by_name(tenant.enterprise_id, market_name, raise_exception=True) app = app_market_service.get_market_app_model(market, group_key) app_name = app.app_name app_record = upgrade_repo.create_app_upgrade_record(group_name=app_name, **recode_kwargs) return app_record else: raise AbortRequest(msg="the app model is not in the group", msg_show="该应用中没有这个应用模型", status_code=404)
def get_or_create_upgrade_record(self, tenant_id, group_id, group_key): """获取或创建升级记录""" recode_kwargs = { "tenant_id": tenant_id, "group_id": group_id, "group_key": group_key, "create_time": datetime.now(), } try: app_record = upgrade_repo.get_app_not_upgrade_record( status__lt=UpgradeStatus.UPGRADED.value, **recode_kwargs) except AppUpgradeRecord.DoesNotExist: from console.services.group_service import group_service service_group_keys = group_service.get_group_service_sources( group_id).values_list('group_key', flat=True) if group_key not in set(service_group_keys or []): raise AbortRequest(msg="the rainbond app is not in the group", msg_show="该组中没有这个云市组件", status_code=404) tenant = Tenants.objects.get(tenant_id=tenant_id) app = rainbond_app_repo.get_rainbond_app_qs_by_key( tenant.enterprise_id, group_key).first() if not app: raise AbortRequest(msg="No rainbond app found", msg_show="没有找到此云市组件", status_code=404) app_record = upgrade_repo.create_app_upgrade_record( group_name=app.group_name, **recode_kwargs) return app_record
def get_or_create_upgrade_record(self, tenant_id, group_id, group_key): """获取或创建升级记录""" recode_kwargs = { "tenant_id": tenant_id, "group_id": group_id, "group_key": group_key, "create_time": datetime.now(), } try: app_record = upgrade_repo.get_app_not_upgrade_record(status__lt=UpgradeStatus.UPGRADED.value, **recode_kwargs) except AppUpgradeRecord.DoesNotExist: from console.services.group_service import group_service tenant = Tenants.objects.get(tenant_id=tenant_id) service_group_keys = group_service.get_group_service_sources(group_id).values_list('group_key', flat=True) if group_key in set(service_group_keys or []): app_name = None app = rainbond_app_repo.get_rainbond_app_qs_by_key(tenant.enterprise_id, group_key).first() if app: app_name = app.app_name else: is_cloud_app = False markets = self.get_cloud_markets(enterprise_id=tenant.enterprise_id) if markets: for market in markets: cloud_app = self.get_cloud_app(tenant.enterprise_id, market.market_id, group_key) if cloud_app: app_name = cloud_app.name is_cloud_app = True if not is_cloud_app: raise AbortRequest(msg="the rainbond app is not in the group", msg_show="该应用中没有这个云市组件", status_code=404) app_record = upgrade_repo.create_app_upgrade_record(group_name=app_name, **recode_kwargs) return app_record else: raise AbortRequest(msg="the rainbond app is not in the group", msg_show="该应用中没有这个云市组件", status_code=404)
def get(self, request, group_id, *args, **kwargs): """查询当前组下的云市应用""" group_id = int(group_id) group = group_service.get_group_or_404(self.tenant, self.response_region, group_id) service_group_keys = group_service.get_group_service_sources( group.ID).values_list('group_key', flat=True) def yield_app_info(): for group_key in set(service_group_keys): app_qs = rainbond_app_repo.get_rainbond_app_qs_by_key( group_key=group_key) app = app_qs.first() if not app: continue group_version_list = app_qs.values_list('version', flat=True) upgrade_versions = upgrade_service.get_app_upgrade_versions( self.tenant, group_id, group_key) not_upgrade_record = upgrade_service.get_app_not_upgrade_record( self.tenant.tenant_id, group_id, group_key) yield { 'can_upgrade': bool(upgrade_versions), 'not_upgrade_record_id': not_upgrade_record.ID, 'not_upgrade_record_status': not_upgrade_record.status, 'group_version_list': group_version_list, 'group_key': app.group_key, 'group_name': app.group_name, 'share_user': app.share_user, 'share_team': app.share_team, 'tenant_service_group_id': app.tenant_service_group_id, 'pic': app.pic, 'source': app.source, 'describe': app.describe, 'enterprise_id': app.enterprise_id, 'is_official': app.is_official, 'details': app.details, 'min_memory': group_service.get_service_group_memory(app.app_template), } return MessageResponse( msg="success", list=[app_info for app_info in yield_app_info()])