def getDebugResult(request): langDict = getLangTextDict(request) testDebugId = request.POST.get("body") startTime = time.time() while True: if (time.time() - startTime) >= 1: return HttpResponse( ApiReturn(ApiReturn.CODE_DEBUG_TIMEOUT, langDict['web']['httpDebugTimeout']).toJson()) # debugResult = DubboInterfaceDebugService.getDebugResult(request.session.get("loginName")) # if debugResult != 0: # addUserLog(request, "DUBBO单接口管理->接口调试->获取结果->成功", "PASS") # print(debugResult) # return render(request,"dubbo/interface/SubPages/interface_debug_page.html",debugResult) try: debugResult = json.loads(RedisCache().get_data(testDebugId)) except Exception as e: print(traceback.format_exc()) return HttpResponse( ApiReturn(ApiReturn.CODE_ERROR, "调试结果解析异常,请联系管理员").toJson()) if debugResult["execStatus"] == 3 or debugResult["execStatus"] == 4: debugResult["alias"] = TbConfigHttp.objects.get( httpConfKey=debugResult["httpConfKey"]).alias RedisCache().del_data(testDebugId) try: content = json.loads(debugResult['actualResult'])['content'] if isJson(content): debugResult["respBodyText"] = content else: debugResult["respBodyText"] = "" except: debugResult["respBodyText"] = "" return render( request, "dubbo/interface/SubPages/interface_debug_page.html", debugResult)
def getDebugResult(request): langDict = getLangTextDict(request) startTime = time.time() testDebugId = request.POST.get("body") while True: if (time.time() - startTime) >= 1: return HttpResponse( ApiReturn(ApiReturn.CODE_DEBUG_TIMEOUT, langDict['web']['httpDebugTimeout']).toJson()) try: debugResult = json.loads(RedisCache().get_data(testDebugId)) except Exception as e: print(traceback.format_exc()) return HttpResponse( ApiReturn(ApiReturn.CODE_ERROR, "调试结果解析异常,请联系管理员").toJson()) if debugResult["execStatus"] == 3 or debugResult["execStatus"] == 4: debugResult["alias"] = TbConfigHttp.objects.get( httpConfKey=debugResult["httpConfKey"]).alias RedisCache().del_data(testDebugId) addUserLog(request, "单接口管理->接口调试->获取结果->成功", "PASS") return render( request, "InterfaceTest/HTTPInterface/SubPages/HTTP_interface_debug_page.html", debugResult)
def getAllBusinessLines(request): businessLines = TbBusinessLine.objects.filter(state=1) businessLineList = [] if len(businessLines) == 0: return HttpResponse(ApiReturn(code=ApiReturn.CODE_WARNING, message="没有可用的业务线 请联系管理员").toJson()) for tmpBusinessLine in businessLines: businessLineList.append(tmpBusinessLine.bussinessLineName) return HttpResponse(ApiReturn(body=businessLineList).toJson())
def follow(request): operate = request.GET.get("oprate", "follow") mockId = request.GET.get("mockId", "") follower = request.session.get("loginName") if mockId == "": return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR,message="mockId必传").toJson()) retcode, retmsg = MockHttpService.follow(mockId,operate,follower) return HttpResponse(ApiReturn(code=retcode,message=retmsg).toJson())
def interfaceGetAutoFillData(request): interfaceAutoFillKey = request.GET.get("interfaceAutoFillKey", None) if interfaceAutoFillKey: try: sendParams = RedisCache().get_data(interfaceAutoFillKey) RedisCache().del_data(interfaceAutoFillKey) except Exception as e: return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="读取数据错误,请联系管理员").toJson()) return HttpResponse(ApiReturn(body=sendParams).toJson()) return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="没有找到KEY值,请联系管理员").toJson())
def getEnvVersionRelation(request): aliasList = json.loads(request.POST.get("aliasList", None)) envVersionList = [] if aliasList: for alias in aliasList: version = TbWebPortalStandardEnv.objects.get(state=1, alias=alias).version envVersionList.append(alias + "(" + version + ")") return HttpResponse(ApiReturn(body=envVersionList).toJson()) else: return HttpResponse(ApiReturn(code=ApiReturn.CODE_WARNING, message="没有可用的环境, 请联系管理员").toJson())
def runContrackTask(request): mockId = request.GET.get("mockId") httpConfKey = request.GET.get("httpConfKey") if(mockId): mockInfo = MockHttpService.getInterfaceByMockId(mockId) if mockInfo: if mockInfo.interfaceIds.strip(",").strip() == "": return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="没有发现契约接口信息!", body=mockId + httpConfKey).toJson()) else: return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="没有发现mock信息!", body=mockId + httpConfKey).toJson()) else: return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="必须有mockId参数!", body=mockId + httpConfKey).toJson()) if httpConfKey: pass else: return HttpResponse(ApiReturn(code=ApiReturn.CODE_ERROR, message="必须有httpConfKey参数!", body=mockId + httpConfKey).toJson()) taskExc = TbTaskExecute() taskExc.taskId = "CONTRACT_TASK_%s" % mockId taskExc.title = "契约测试:%s" % mockInfo.title taskExc.taskdesc = taskExc.title taskExc.protocol = "HTTP" taskExc.businessLineGroup = "['%s']" % BusinessService.getBusinessLineNameById(mockInfo.businessLineId) taskExc.modulesGroup = "['%s']" % ModulesService.getModuleNameById(mockInfo.moduleId) taskExc.interfaceCount = len(mockInfo.interfaceIds.strip(",").split(",")) taskExc.taskInterfaces = mockInfo.interfaceIds.strip(",") taskExc.caseCount = 0 taskExc.interfaceNum = taskExc.interfaceCount taskExc.httpConfKey = TbConfigHttp.objects.filter(httpConfKey=httpConfKey.strip()).get() taskExc.execComments = "执行契约测试任务" taskExc.testResultMsg = "" taskExc.testReportUrl = "" taskExc.addBy = TbUser.objects.filter(loginName = request.session.get("loginName")).get() taskExc.execBy = TbUser.objects.filter(loginName = request.session.get("loginName")).get() taskExc.save(force_insert=True) addDataResult = dbModelToDict(taskExc) # 将任务执行的信息写入缓存,任务执行的前缀为 taskExecute_executeId RedisCache().set_data("%s_taskExecute_%s" % ("HTTP", addDataResult["id"]), "0:0:0:0:0", 60 * 60 * 12) RedisCache().set_data("%s_taskExecuteStatus_%s" % ("HTTP", addDataResult["id"]), "1", 60 * 60 * 12) # tcpin = '{"do":3,"TaskExecuteId":"%s"}' % addDataResult["id"] tcpin = '{"do":3,"TaskExecuteId":%s,"TaskExecuteEnv":"%s","TaskId":"%s","protocol":"HTTP"}' % (addDataResult["id"], addDataResult["httpConfKey_id"], addDataResult["taskId"]) retApiResult = send_tcp_request(tcpin) if retApiResult.code != ApiReturn.CODE_OK: retmsg = 1 RedisCache().del_data("%s_taskExecute_%s" % ("HTTP", addDataResult["id"])) RedisCache().del_data("%s_taskExecuteStatus_%s" % ("HTTP", addDataResult["id"])) bodyDict = { "taskExecuteId":taskExc.id, "taskId":taskExc.taskId } return HttpResponse(ApiReturn(code=ApiReturn.CODE_OK,message="ok",body=bodyDict).toJson())
def updatePwd(request): pwd = request.GET.get("pwd") m = hashlib.md5(pwd.encode(encoding='gb2312')) modPwd = m.hexdigest() try: UserLoginService.updatePwd(request.session.get("loginName"), modPwd) return HttpResponse(ApiReturn(ApiReturn.CODE_OK).toJson()) except Exception as e: return HttpResponse( ApiReturn(ApiReturn.CODE_USER_EXCEPITON, "修改失败,请联系管理员%s" % e).toJson())
def interfaceSaveEdit(request): postLoad = json.loads(request.POST.get("interfaceData")) try: if 'advancedPythonCode' in postLoad.keys(): retB,retS = verifyPythonMode(postLoad['advancedPythonCode']) if retB == False: retMsg = "高级模式python代码非法:%s" % retS return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, retMsg, retMsg).toJson()) retm = MockHttpService.interfaceSaveEdit(request,postLoad) addUserLog(request, "MOCK服务->更新MOCK[%s]->成功。" % id, "PASS") return HttpResponse(ApiReturn(ApiReturn.CODE_OK, message=retm).toJson()) except Exception as e: logger.error(traceback.format_exc()) return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_ERROR, '保存编辑失败!%s' % e).toJson())
def send_tcp_request(reqstr): #链接服务端ip和端口 logger.info("TCPHOST&PORT:%s:%s" % (TCP_HOST, TCP_PORT)) print(TCP_HOST, TCP_PORT) maxTryTimes = 10 for i in range(0, maxTryTimes): ip_port = (TCP_HOST, TCP_PORT) try: #TCP发送 #生成一个接口调试请求 logger.info("开始创建tcp对象") sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sk.settimeout(3) logger.info("创建成功") #请求连接服务端 sk.connect(ip_port) logger.info("连接成功") #发送数据 sk.sendall(bytes(reqstr, 'utf8')) logger.info("发送成功") #接受数据 server_reply = sk.recv(1024) logger.info("接收成功") #打印接受的数据 if str(server_reply, 'utf8') == "ok": logger.info("@@@@tcp发送ok:%s" % reqstr) return ApiReturn(ApiReturn.CODE_OK, str(server_reply, 'utf8')) else: logger.warning("@@@@tcp发送ERROR:%s == %s" % (reqstr, str(server_reply, 'utf8'))) return ApiReturn(ApiReturn.CODE_TCP_RETURN_NOT_OK, str(server_reply, 'utf8')) except Exception as e: logger.error( "第%d次尝试发送tcp消息\n%s\n到%s:%s发生异常。异常信息:\n%s" % ((i + 1), reqstr, TCP_HOST, TCP_PORT, traceback.format_exc())) ransleepint = random.randint(500, 5000) logger.info("休息%s秒后重试" % (float(ransleepint) / 1000.0)) time.sleep(float(ransleepint) / 1000.0) if i == maxTryTimes - 1: return ApiReturn( ApiReturn.CODE_TCP_EXCEPTION, "尝试%d次发送tcp消息\n%s\n到Server发生异常。异常信息:\n%s" % (maxTryTimes, reqstr, str(e))) finally: #关闭连接 if sk: sk.close()
def getAllPassRate(request): allPassRate = list(TbWebPortalAllPassRate.objects.all())[-7:] passRateListForEnv = [] envList = [] passRateEnvDict = {} aliasList = [] for passRate in allPassRate: testResultList = passRate.testResultMsg for testResult in json.loads(testResultList): if testResult["env"] not in envList: envList.append(testResult["env"]) envAliasDict = WebPortalService.getAllEnvAlias() '''根据最新一条数据中的testResultMessage获得aliasList''' for envAlias in envAliasDict: aliasList.append(envAliasDict[envAlias]) '''获得每个环境7天的通过''' for env in envList: passRateList = [] for passRate in allPassRate: testResultList = passRate.testResultMsg for testResult in json.loads(testResultList): if env == testResult["env"]: passRateList.append(testResult["passRate"]) passRateListForEnv.append(passRateList) passRateEnvDict["envList"] = aliasList passRateEnvDict["passRateDict"] = dict(zip(aliasList, passRateListForEnv)) return HttpResponse(ApiReturn(body=passRateEnvDict).toJson())
def sendDebugInterfaceTcpMsg(request): langDict = getLangTextDict(request) #aaabbb tcpStr = '{"do":1,"InterfaceDebugId":"%s","protocol":"DUBBO"}' % request.POST.get( "body") retApiResult = send_tcp_request(tcpStr) if retApiResult.code != ApiReturn.CODE_OK: debugMsg = {} debugMsg["execStatus"] = 4 debugMsg["actualResult"] = str( retApiResult.code) + ":" + retApiResult.message debugMsg["assertResult"] = str( retApiResult.code) + ":" + retApiResult.message debugMsg["modTime"] = datetime.datetime.now() DubboInterfaceDebugService.setDebugFail( request.session.get("loginName"), debugMsg) addUserLog( request, "DUBBO单接口管理->接口调试->发送TCP请求->失败,原因\n%s" % retApiResult.toJson(), "FAIL") return HttpResponse(retApiResult.toJson()) else: addUserLog(request, "DUBBO单接口管理->接口调试->发送TCP请求->成功", "PASS") return HttpResponse( ApiReturn(ApiReturn.CODE_OK, langDict['web']['httpInterfaceDebugSuccess']).toJson())
def getAllEnv(request): allEnvlist = TbWebPortalStandardEnv.objects.filter(state=1, actionIsShow=1).order_by("lineSort") aliasList = [] for env in allEnvlist: if env.alias not in aliasList: aliasList.append(env.alias + "(" + env.version + ")") return HttpResponse(ApiReturn(body=aliasList).toJson())
def interfaceDebugAdd(request): testDebugId = "interfaceDebug_%s_%s" % (request.session.get("loginName"), int(time.time() * 1000)) if request.method != 'POST': addUserLog(request, "DUBBO单接口管理->添加接口调试->请求方式错误", "FAIL") return HttpResponse( ApiReturn(ApiReturn.CODE_METHOD_ERROR, "请求方式错误", "").toJson()) data = json.loads(request.POST.get("interfaceData")) data['version'] = request.session.get("version") langDict = getLangTextDict(request) try: # addDebugRes = DubboInterfaceDebugService.interfaceDebugAdd(data,request.session.get("loginName")) data['actualResult'] = '' data['assertResult'] = '' data['testResult'] = "NOTRUN" data['execStatus'] = 1 data['beforeExecuteTakeTime'] = 0 data['executeTakeTime'] = 0 data['afterExecuteTakeTime'] = 0 data['totalTakeTime'] = 0 data['businessLineId'] = data["businessLineId_id"] data['moduleId'] = data["moduleId_id"] data['httpConfKey'] = data["httpConfKey_id"] RedisCache().set_data(testDebugId, json.dumps(data), 60 * 60) # if isinstance(addDebugRes,str): # return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_DEBUG_ADD_EXCEPITON, # langDict['dubbo']['interfaceDebugAddError'], # "%s" % str(addDebugRes)).toJson()) # else: # debugId = addDebugRes.id except Exception as e: logging.error(traceback.format_exc()) addUserLog( request, "DUBBO单接口管理->添加接口调试->插入失败,原因\n%s" % ApiReturn(ApiReturn.CODE_INTERFACE_DEBUG_ADD_EXCEPITON, langDict['web']['httpInterfaceDebugAddException'], "%s" % e).toJson(), "FAIL") return HttpResponse( ApiReturn(ApiReturn.CODE_INTERFACE_DEBUG_ADD_EXCEPITON, langDict['web']['httpInterfaceDebugAddException'], "%s" % e).toJson()) addUserLog(request, "DUBBO单接口管理->添加接口调试->成功", "PASS") return HttpResponse( ApiReturn(ApiReturn.CODE_OK, langDict['web']['httpInterfaceDebugAdd'], str(testDebugId)).toJson())
def interfaceDel(request): id = request.GET.get("id") try: if VersionService.isCurrentVersion(request): interfaceData = MockHttpService.getInterfaceForId(request.GET.get("id")) else: interfaceData = MockHttpService.getVersionInterfaceForId(request.GET.get("id")) except Exception as e: print(traceback.format_exc()) return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_ERROR, "参数id错误 %s" % e).toJson()) if MockHttpService.delInterfaceForId(request,id) == 1: addUserLog(request, "MOCK服务->删除MOCK[%s]->成功。" % id, "PASS") return HttpResponse(ApiReturn(ApiReturn.CODE_OK).toJson()) else: return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_ERROR).toJson())
def getRecentSevenDays(request): now = datetime.date.today().strftime('%Y-%m-%d') dateList = [now] numList = [-1, -2, -3, -4, -5, -6] for num in numList: date = (datetime.date.today() + datetime.timedelta(days=num)).strftime('%Y-%m-%d') dateList.append(date) return HttpResponse(ApiReturn(body=dateList).toJson())
def interfaceAdd(request): # 当前版本使用历史代码,不更新。 if request.method != 'POST': return HttpResponse(ApiReturn(ApiReturn.CODE_METHOD_ERROR, "请求方式错误", "").toJson()) data = json.loads(request.POST.get("interfaceData")) try: if 'advancedPythonCode' in data.keys(): retB,retS = verifyPythonMode(data['advancedPythonCode']) if retB == False: retMsg = "高级模式python代码非法:%s" % retS return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, retMsg, retMsg).toJson()) MockHttpService.addHttpMockInfo(data, request.session.get("loginName")) except Exception as e: logger.error(traceback.format_exc()) return HttpResponse(ApiReturn(ApiReturn.CODE_INTERFACE_ERROR, "添加接口错误", "Failed: %s" % e).toJson()) return HttpResponse(ApiReturn(ApiReturn.CODE_OK, "添加成功", "").toJson())
def catch_exception_wrapper(*args, **kwargs): try: if is_sql_inject_request(args[0]): return HttpResponse( ApiReturn(code=ApiReturn.CODE_EXCEPTION, message="有SQL注入风险,请检查搜索条件!", body="").toJson()) else: funcRet = func(*args, **kwargs) return funcRet except Exception as e: retMsg = "[EXCEPTION]: 函数[%s]异常:%s" % (func.__name__, e) logging.error(traceback.format_exc()) return HttpResponse( ApiReturn(code=ApiReturn.CODE_EXCEPTION, message=retMsg, body=traceback.format_exc()).toJson())
def updateInterfaceLevel(request): userToken = request.GET.get("token", "") if userToken == "": return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="toekn为空").toJson()) try: userData = TbUser.objects.get(token=userToken) except Exception as e: return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="token错误,未查询到用户").toJson()) interfaceId = request.GET.get("interfaceId", "") if interfaceId == "": return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="interfaceId为必填参数").toJson()) try: interfaceData = TbHttpInterface.objects.get(interfaceId=interfaceId, state=1) except Exception as e: return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="InterfaceId 参数错误").toJson()) if userData.loginName != interfaceData.addBy.loginName: return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="只能更新自己的接口").toJson()) levelDict = {"高": 0, "中": 5, "低": 9} levelText = request.GET.get("level", "中") if levelText in levelDict.keys(): level = levelDict[levelText] else: return HttpResponse(ApiReturn(ApiReturn.CODE_ERROR, message="level参数的值为【高】、【中】、【低】").toJson()) interfaceData.caselevel = level interfaceData.save(force_update=True) return HttpResponse(ApiReturn().toJson())
def interfaceGetSyncTestCaseStep(request): id = request.GET.get("id") if VersionService.isCurrentVersion(request): interfaceData = dbModelToDict(MockHttpService.getInterfaceForId(id)) syncList = syncDelTipList(interfaceData) else: interfaceData = dbModelToDict(HTTP_interfaceService.getVersionInterfaceForId(id)) syncList = syncVersionDelTipList(interfaceData, VersionService.getVersionName(request)) return HttpResponse(ApiReturn(body=syncList).toJson())
def queryPeopleInterface(request): langDict = getLangTextDict(request) pageNum = int(request.GET.get("num")) attrData = HTTP_interfaceService.queryPeopleInterface( pageNum, commonWebConfig.queryPeopleInterface, request.session.get("loginName")) return HttpResponse( ApiReturn(ApiReturn.CODE_OK, langDict["web"]["httpInterfaceSuccess"], attrData).toJson())
def getBusinessLineNameId(request): resultList = [] businessLines = TbWebPortalBusinessLine.objects.filter(isShow=1, state=1).order_by("level") for businessLine in businessLines: resultDict = {} id = businessLine.bussinessLine + "ActionPassrateChart" resultDict["name"] = businessLine.bussinessLine resultDict["id"] = id resultList.append(resultDict) return HttpResponse(ApiReturn(body=resultList).toJson())
def catch_exception_wrapper(*args, **kwargs): try: funcRet = func(*args, **kwargs) return funcRet except Exception as e: retMsg = "[EXCEPTION]: 函数[%s]异常:%s" % (func.__name__, e) logging.error(traceback.format_exc()) return HttpResponse( ApiReturn(code=ApiReturn.CODE_EXCEPTION, message=retMsg, body=traceback.format_exc()).toJson())
def getContrackTaskRecentExecInfos(request): mockId = request.GET.get("mockId") taskId = "CONTRACT_TASK_%s" % mockId retList = executeSqlGetDict( "select * from tb_task_execute where taskId='%s' order by addTime desc limit 0,10" % taskId) for pageData in retList: execProgressDataLen = pageData["execProgressData"].split(":") try: pageData["execPercent"] = "pass" pageData["execColor"] = "success" pageData["executeCount"] = (int(execProgressDataLen[1]) + int(execProgressDataLen[2]) + int(execProgressDataLen[3])) pageData["passCount"] = int(execProgressDataLen[1]) pageData["failCount"] = int(execProgressDataLen[2]) pageData["errorCount"] = int(execProgressDataLen[3]) pageData["passPercent"] = int( (pageData["executeCount"] / int(execProgressDataLen[0])) * 100) if int(execProgressDataLen[2]) > 0 or int( execProgressDataLen[3]) > 0: pageData["execPercent"] = "fail" pageData["execColor"] = "danger" except ZeroDivisionError: pageData["passPercent"] = 0 #版本号 if pageData["version"] == "CurrentVersion": pageData["versionText"] = request.session.get("CurrentVersion") else: pageData["versionText"] = pageData["version"] #执行备注 if pageData["execComments"] == "": pageData["execComments"] = "-" #保存到历史记录 if pageData["isSaveHistory"] == 1: pageData["isSaveHistoryText"] = "是" else: pageData["isSaveHistoryText"] = "否" #发送报告邮件 if str(pageData["isSendEmail"])[0] == "1": pageData["isSendEmailText"] = "是" else: pageData["isSendEmailText"] = "否" return HttpResponse( ApiReturn(code=ApiReturn.CODE_OK, message="ok", body=retList).toJson())
def send_tcp_request(reqstr): #链接服务端ip和端口 logging.debug("TCPHOST&PORT:%s:%s" % (TCP_HOST, TCP_PORT)) print(TCP_HOST, TCP_PORT) maxTryTimes = 10 for i in range(0, maxTryTimes): ip_port = (TCP_HOST, TCP_PORT) try: #TCP发送 #生成一个接口调试请求 sk = socket.socket() #请求连接服务端 sk.connect(ip_port) #发送数据 sk.sendall(bytes(reqstr, 'utf8')) #接受数据 server_reply = sk.recv(1024) #打印接受的数据 if str(server_reply, 'utf8') == "ok": return ApiReturn(ApiReturn.CODE_OK, str(server_reply, 'utf8')) else: return ApiReturn(ApiReturn.CODE_TCP_RETURN_NOT_OK, str(server_reply, 'utf8')) except Exception as e: logging.error( "第%d次尝试发送tcp消息\n%s\n到%s:%s发生异常。异常信息:\n%s" % ((i + 1), reqstr, TCP_HOST, TCP_PORT, traceback.format_exc())) ransleepint = random.randint(500, 5000) time.sleep(float(ransleepint) / 1000.0) if i == maxTryTimes - 1: return ApiReturn( ApiReturn.CODE_TCP_EXCEPTION, "尝试%d次发送tcp消息\n%s\n到Server发生异常。异常信息:\n%s" % (maxTryTimes, reqstr, str(e))) finally: #关闭连接 if sk: sk.close()
def updateTaskToCurrentVersion(request): try: oldVersion = request.GET.get("version", "") if oldVersion == "": oldVersion = TbVersion.objects.filter( state=1).order_by("-addTime")[1].versionName currentVersion = TbVersion.objects.get(type=2).versionName taskList = dbModelListToListDict( TbWebPortalStandardTask.objects.filter(version=oldVersion)) for index in taskList: tbModel = TbWebPortalStandardTask() tbModel.version = currentVersion tbModel.businessLine = index["businessLine"] tbModel.team = index["team"] tbModel.taskId = index["taskId"] tbModel.head = index["head"] tbModel.save() except Exception as e: return HttpResponse( ApiReturn(code=ApiReturn.CODE_ERROR, message="添加失败%s " % e).toJson()) return HttpResponse( ApiReturn(code=ApiReturn.CODE_OK, message="添加成功").toJson())
def getEnvVersion(request): httpConfKey = request.GET.get("httpConfKey","") if httpConfKey: result = dbModelListToListDict(TbWebPortalStandardEnv.objects.filter(state=1,httpConfKey=httpConfKey)) else: result = dbModelListToListDict(TbWebPortalStandardEnv.objects.filter(state=1)) for resultIndex in result: versionData = TbVersion.objects.get(versionName=resultIndex["version"]) if versionData: versionDict = dbModelToDict(versionData) if versionDict["type"] == 2: resultIndex["invokeVersion"] = "CurrentVersion" else: resultIndex["invokeVersion"] = resultIndex["version"] return HttpResponse(ApiReturn(body=result).toJson())
def getInterfaceDataForId(request): langDict = getLangTextDict(request) serviceConf = ServiceConfService.queryServiceConfSort(request) # 根据版本判断应该从哪个表里取数据 王吉亮添加于20180224 if VersionService.isCurrentVersion(request): getDBData = MockHttpService.getInterfaceForIdToDict(request.GET.get("id")) interfaceIdList = getDBData['interfaceIds'].strip(",").split(',') interfaceList = [] for tmpInterfaceId in interfaceIdList: if tmpInterfaceId.strip() != "": interfaceList.append(dbModelToDict(HTTP_interfaceService.getInterfaceByInterfaceId(tmpInterfaceId.strip()))) getDBData['interfaceList'] = interfaceList else: getDBData = MockHttpService.getVersionInterfaceForIdToDict(request.GET.get("id"),request.session.get("version")) return HttpResponse(ApiReturn(ApiReturn.CODE_OK, langDict["web"]["httpInterfaceSuccess"], json.dumps(getDBData)).toJson())
def updateWebPortalData(request): tmpSrcRoot = "%s/AutotestWebD/apps/webportal/scripts" % (releaseDir) resultList = [] for index in WebPortalService.scriptList: # if "openApi" in index: # continue thisResule = {"code": 10000, "msg": "%s 执行成功!" % index} output = os.popen('cd %s && python3 %s' % (tmpSrcRoot, index)) outStr = output.read() if "done!" not in outStr: thisResule = { "code": 10001, "msg": "%s 执行失败!" % index, "body": 'cd %s && python3 %s' % (tmpSrcRoot, index) } resultList.append(thisResule) return HttpResponse(ApiReturn(resultList).toJson())
def getBusinessLinesActionPassRate(request): resultDict = {} resultList = [] envAliasDict = WebPortalService.getAllEnvAlias() businessLines = TbWebPortalBusinessLine.objects.filter( isShow=1, state=1).order_by("level") for businessLine in businessLines: allPassRate = list( TbWebPortalBusinessLineActionPassRate.objects.filter( businessLine=businessLine.bussinessLine, state=1))[-7:] passRateListForEnv = [] envList = [] passRateEnvDict = {} aliasList = [] for passRate in allPassRate: testResultList = passRate.testResultMsg for testResult in json.loads(testResultList): if testResult["env"] not in envList: envList.append(testResult["env"]) for envAlias in envAliasDict: aliasList.append(envAliasDict[envAlias]) for env in envList: passRateList = [] for passRate in allPassRate: testResultList = passRate.testResultMsg for testResult in json.loads(testResultList): if env == testResult["env"]: passRateList.append(testResult["passRate"]) passRateListForEnv.append(passRateList) passRateEnvDict["envList"] = aliasList passRateEnvDict["passRateDict"] = dict( zip(aliasList, passRateListForEnv)) resultDict[businessLine.bussinessLine] = passRateEnvDict resultList.append(resultDict) return HttpResponse(ApiReturn(body=resultList).toJson())