def post(self, request, team_name, group_id, *args, **kwargs): """ 生成分享订单,会验证是否能够分享 --- parameter: - name: team_name description: 团队名 required: true type: string paramType: path - name: group_id description: 应用id required: true type: string paramType: path """ scope = request.data.get("scope") market_name = None if scope == "goodrain": target = request.data.get("target") market_name = target.get("store_id") if market_name is None: result = general_message(400, "fail", "参数不全") return Response(result, status=result.get("code", 200)) try: if group_id == "-1": code = 400 result = general_message(400, "group id error", "未分组应用不可分享") return Response(result, status=code) team_id = self.team.tenant_id group_count = group_repo.get_group_count_by_team_id_and_group_id(team_id=team_id, group_id=group_id) if group_count == 0: code = 202 result = general_message(code, "group is not yours!", "当前组已删除或您无权限查看!", bean={}) return Response(result, status=200) # 判断是否满足分享条件 data = share_service.check_service_source( team=self.team, team_name=team_name, group_id=group_id, region_name=self.response_region) if data and data["code"] == 400: return Response(data, status=data["code"]) fields_dict = { "group_share_id": make_uuid(), "group_id": group_id, "team_name": team_name, "is_success": False, "step": 1, "share_app_market_name": market_name, "scope": scope, "create_time": datetime.datetime.now(), "update_time": datetime.datetime.now(), } service_share_record = share_service.create_service_share_record(**fields_dict) result = general_message(200, "create success", "创建成功", bean=service_share_record.to_dict()) return Response(result, status=200) except ServiceHandleException as e: raise e except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=500)
def post(self, request, team_name, group_id, *args, **kwargs): """ 生成分享订单,会验证是否能够分享 --- parameter: - name: team_name description: 团队名 required: true type: string paramType: path - name: group_id description: 应用组id required: true type: string paramType: path """ try: if group_id == "-1": code = 400 result = general_message(400, "group id error", "未分组应用不可分享") return Response(result, status=code) team_id = self.team.tenant_id group_count = group_repo.get_group_count_by_team_id_and_group_id(team_id=team_id, group_id=group_id) if group_count == 0: code = 400 result = general_message(code, "group is not yours!", "这个应用组不是你的!") return Response(result, status=code) # 判断是否满足分享条件 data = share_service.check_service_source( team=self.team, team_name=team_name, group_id=group_id, region_name=self.response_region) if data and data["code"] == 400: return Response(data, status=data["code"]) # 判断是否有未完成订单 share_record = share_service.get_service_share_record_by_group_id(group_id) if share_record: if not share_record.is_success and share_record.step < 3: result = general_message(20021, "share record not complete", "之前有分享流程未完成", bean=share_record.to_dict()) return Response(result, status=200) fields_dict = { "group_share_id": make_uuid(), "group_id": group_id, "team_name": team_name, "is_success": False, "step": 1, "create_time": datetime.datetime.now(), "update_time": datetime.datetime.now() } service_share_record = share_service.create_service_share_record(**fields_dict) result = general_message(200, "create success", "创建成功", bean=service_share_record.to_dict()) return Response(result, status=200) except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=500)
def post(self, request, team_name, plugin_id, *args, **kwargs): """ 创建分享插件记录 --- parameter: - name: team_name description: 团队名 required: true type: string paramType: path - name: plugin_id description: 插件id required: true type: string paramType: path - name: build_version description: 构建版本 required: true type: string paramType: path """ team_id = self.team.tenant_id plugin = plugin_repo.get_plugin_by_plugin_id(team_id, plugin_id) if not plugin: return Response(general_message(404, 'plugin not exist', '插件不存在')) share_record = share_service.get_service_share_record_by_group_id( plugin_id) if share_record: if not share_record.is_success and share_record.step < 3: result = general_message(20021, "share not complete", "有分享流程未完成", bean=share_record.to_dict()) return Response(result, status=200) status, msg, msg_show = market_plugin_service.check_plugin_share_condition( self.team, plugin_id, self.response_region) if status != 200: return Response(general_message(status, msg, msg_show), status=status) record = { "group_share_id": make_uuid(), "group_id": plugin_id, "team_name": team_name, "is_success": False, "step": 1, } service_share_record = share_service.create_service_share_record( **record) result = general_message(200, "create success", "创建成功", bean=service_share_record.to_dict()) return Response(result, status=200)
def post(self, request, group_id, *args, **kwargs): """ 生成分享应用实体,向数据中心发送分享任务 --- parameter: - name: team_name description: 团队名 required: true type: string paramType: path - name: group_id description: 应用组id required: true type: string paramType: path - name: group_name description: 应用包名字 required: true type: string paramType: body - name: version description: 应用包版本 required: true type: string paramType: body - name: scope description: 分享应用包可用范围("team", u"团队"), ("enterprise", u"公司"), ("goodrain", u"好雨云市场") required: true type: string paramType: body - name: pic description: 应用包头像 required: true type: string paramType: body - name: app_template_incomplete description: 不完整的App模版 required: true type: string paramType: body """ group_name = request.data.get("group_name", None) version = request.data.get("version", "v1.0") describe = request.data.get("describe", "This is a default description.") scope = request.data.get("scope", "team") pic = request.data.get("pic", None) app_template_incomplete = request.data.get("app_template_incomplete", None) source = request.data.get('source', 'local') # is_random = request.data.get("is_random", False) # 插件 try: group_id = str(group_id) if group_id == "-1": code = 400 result = general_message(code, "query success", "未分组应用不可分享") return Response(result, status=code) else: if group_id is None or not group_id.isdigit(): code = 400 result = general_message( code, "group_id is missing or not digit!", "group_id缺失或非数字") return Response(result, status=code) team_id = self.team.tenant_id group_count = group_repo.get_group_count_by_team_id_and_group_id( team_id=team_id, group_id=group_id) if group_count == 0: code = 400 result = general_message(code, "group is not yours!", "这个应用组不是你的!") return Response(result, status=code) else: if RainbondCenterApp.objects.filter( group_name=group_name, version=version).exists(): result = general_message(400, "failed", "此应用包该版本已经存在") return Response(result, status=400) else: step = 0 for service_incomplete in app_template_incomplete: service_env_map_list = service_incomplete.get( "service_env_map_list", None) if service_env_map_list: for service_env in service_env_map_list: is_change = service_env.get( "is_change", None) is_change_p = request.data.get( "is_change", False) is_change = is_change_p is_slug, data = app_store.judge_service_type( scope=scope, team_name=self.team_name, service=service_incomplete) if is_slug: service_incomplete["service_slug"] = data else: service_incomplete["service_image"] = data app_template = app_template_incomplete app = share_service.create_basic_app_info( group_key=make_uuid(), group_name=group_name, version=version, describe=describe, scope=scope, pic=pic, source=source, share_team=self.team.tenant_id, share_user=request.user.user_id, tenant_service_group_id=group_id, app_template=json_dump(app_template)) fields_dict = { "group_share_id": app.ID, "group_id": group_id, "team_id": team_id, "is_success": False, "step": step } service_share_record = share_service.create_service_share_record( **fields_dict) for service in app_template: if service.get("service_slug", None): logger.debug("group.publish", "service group publish slug.") code, msg, event_id = share_service.upload_slug( request, team=self.team, scope=scope, region_name=self.response_region, app=app, service=service) step += 1 fields_dict.update({ "step": step, "is_success": False }) service_share_record = share_service.create_service_share_record( **fields_dict) result = general_message(200, 'share running……', '应用包正在分享……', bean={ "event_id": event_id, "app_id": app.ID, "group_id": group_id }) else: logger.debug("group.publish", "service group publish image.") code, msg, event_id = share_service.upload_image( request, team=self.team, scope=scope, region_name=self.response_region, app=app, service=service) result = general_message(200, 'share running……', '应用包正在分享……', bean={ "event_id": event_id, "app_id": app.ID, "group_id": group_id }) return Response(result, status=200) except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=500)