def del_api(request): """ 删除接口 project_id 项目ID api_ids 接口ID列表 :return: """ project_id = request.POST.get("project_id") if not project_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) ids = request.POST.get("api_ids") id_list = ids.split(",") for i in id_list: if not i.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) obj = Project.objects.filter(id=project_id) if obj: for j in id_list: obi = ApiInfo.objects.filter(id=j, project=project_id) if len(obi) != 0: name = obi[0].name obi.delete() record_dynamic(project_id, "删除", "接口", "删除接口“%s”" % name) return JsonResponse(code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
class AutoTestReport(APIView): def get(self, request): """ 测试结果报告 :param request: :return: """ project_id = request.GET.get("project_id") time = request.GET.get('time') if not project_id or not time: return JsonResponse(code="999996", msg="参数有误!") if not project_id.isdecimal(): return JsonResponse(code="999996", msg="参数有误!") try: pro_data = Project.objects.get(id=project_id) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") obj = AutomationTestCase.objects.filter(project=project_id) if obj: case = Q() for i in obj: case = case | Q(automationTestCase=i.pk) case_data = AutomationCaseApi.objects.filter(case) api = Q() if case_data: for j in case_data: api = api | Q(automationCaseApi=j.pk) data = AutomationAutoTestResultSerializer( AutomationCaseTestResult.objects.filter(api, testTime=time), many=True).data success = 0 fail = 0 not_run = 0 error = 0 for i in data: if i["result"] == "PASS": success = success + 1 elif i["result"] == "FAIL": fail = fail + 1 elif i["result"] == "ERROR": error = error + 1 else: not_run = not_run + 1 return JsonResponse(code="999999", msg="成功!", data={ "data": data, "total": len(data), "pass": success, "fail": fail, "error": error, "NotRun": not_run }) else: return JsonResponse(code="999999", msg="成功!")
def get(self, request): """ 获取Api下载文档路径 :param request: :return: """ project_id = request.GET.get("project_id") try: if not project_id.isdecimal(): return JsonResponse(code="999996", msg="参数有误!") except AttributeError: return JsonResponse(code="999996", msg="参数有误!") try: obj = Project.objects.get(id=project_id) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(obj) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") obi = ApiGroupLevelFirst.objects.filter(project=project_id) data = ApiInfoDocSerializer(obi, many=True).data obn = ApiInfoSerializer(ApiInfo.objects.filter(project=project_id), many=True).data url = Write().write_api(str(obj), group_data=data, data=obn) return JsonResponse(code="999999", msg="成功!", data=url)
def post(self, request): """ 新增项目 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result data["user"] = request.user.pk project_serializer = ProjectDeserializer(data=data) with transaction.atomic(): if project_serializer.is_valid(): # 保持新项目 project_serializer.save() # 记录动态 record_dynamic(project=project_serializer.data.get("id"), _type="添加", operationObject="项目", user=request.user.pk, data=data["name"]) # 创建项目的用户添加为该项目的成员 self.add_project_member(project_serializer.data.get("id"), request.user.pk) return JsonResponse( data={"project_id": project_serializer.data.get("id")}, code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.fail())
def post(self, request): """ 添加或修改邮件发送配置 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: obi = Project.objects.get(id=data["project_id"]) if not request.user.is_superuser and obi.user.is_superuser: return JsonResponse(code="999983", msg="无操作权限!") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(obi) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") serialize = AutomationReportSendConfigDeserializer(data=data) if serialize.is_valid(): try: obj = AutomationReportSendConfig.objects.get( project=data["project_id"]) serialize.update(instance=obj, validated_data=data) except ObjectDoesNotExist: serialize.save(project=obi) # 记录动态 record_dynamic(project=data["project_id"], _type="添加", operationObject="邮箱", user=request.user.pk, data="添加邮箱配置") return JsonResponse(code="999999", msg="成功!") return JsonResponse(code="999996", msg="参数有误!")
def post(self, request): """ 启用项目配置 :param request: :return: """ data = request.data # 查找项目是否存在 try: pro_data = Project.objects.get(id=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: obj = ProjectConfig.objects.get(id=data["config_id"], project=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999992", msg="配置不存在") obj.status = True obj.save() record_dynamic(project=data["project_id"], _type="启用", operationObject="配置", user=request.user.pk, data=obj.name) return JsonResponse(code="999999", msg="成功!")
def post(self, request): """ 修改项目 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result # 查找项目是否存在 try: obj = Project.objects.get(id=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist()) # 查找是否相同名称的项目 obi = Project.objects.filter(name=data["name"]).exclude( id=data["project_id"]) if len(obi) == 0: serializer = ProjectDeserializer(data=data) with transaction.atomic(): if serializer.is_valid(): # 修改项目 serializer.update(instance=obj, validated_data=data) # 记录动态 record_dynamic(project=data["project_id"], _type="修改", operationObject="项目", user=request.user.pk, data=data["name"]) return JsonResponse(code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.fail()) else: return JsonResponse(code_msg=GlobalStatusCode.name_repetition())
def post(self, request): """ 新增接口分组 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: obj = Project.objects.get(id=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(obj) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") serializer = ApiGroupLevelFirstDeserializer(data=data) if serializer.is_valid(): serializer.save(project=obj) else: return JsonResponse(code="999998", msg="失败!") record_dynamic(project=serializer.data.get("id"), _type="添加", operationObject="接口分组", user=request.user.pk, data="新增接口分组“%s”" % data["name"]) return JsonResponse(data={ "group_id": serializer.data.get("id") }, code="999999", msg="成功!")
def dynamic(request): """ 获取动态数量 project_id 项目ID :return: """ try: page_size = int(request.GET.get("page_size", 20)) page = int(request.GET.get("page", 1)) except (TypeError, ValueError): return JsonResponse(code_msg=GlobalStatusCode.page_not_int()) project_id = request.GET.get("project_id") if not project_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) obi = Project.objects.filter(id=project_id) if obi: obj = ProjectDynamic.objects.filter(project=project_id).order_by("-time") paginator = Paginator(obj, page_size) # paginator对象 total = paginator.num_pages # 总页数 try: obm = paginator.page(page) except PageNotAnInteger: obm = paginator.page(1) except EmptyPage: obm = paginator.page(paginator.num_pages) serialize = ProjectDynamicSerializer(obm, many=True) return JsonResponse(data={"data": serialize.data, "page": page, "total": total }, code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
def post(self,request): """ 修改项目 :param request: :return: """ data = JSONParser().parse(request) project = get_availability_project(data, request.user) result=all_parameter_check(data) or project_id_check(data) if isinstance(project,Project) else project if result: return result try: Project.objects.get(name=data["name"]) return JsonResponse(code=code.CODE_EXIST_SAME_NAME) except ObjectDoesNotExist: # 更新项目 project_serializer=ProjectDeserializer(data=data) with transaction.atomic(): if project_serializer.is_valid(): project_serializer.update(instance=project,validated_data=data) record_dynamic(project=data['project_id'], _type='修改', operation_object='项目', user=request.user.pk, data=data['name']) return JsonResponse(code=code.CODE_SUCCESS) else: return JsonResponse(code=code.CODE_Failed)
def post(self, request): """ 新增接口 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: pro_data = Project.objects.get(id=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: obi = ApiInfo.objects.get(id=data["id"]) except ObjectDoesNotExist: return JsonResponse(code="999990", msg="接口不存在!") obi.mockStatus = not obi.mockStatus obi.save() try: if obi.mockStatus: record_dynamic(project=data["project_id"], _type="mock", operationObject="接口", user=request.user.pk, data="关闭“%s”Mock" % obi.name) else: record_dynamic(project=data["project_id"], _type="mock", operationObject="接口", user=request.user.pk, data="启动“%s”Mock" % obi.name) return JsonResponse(code="999999", msg="成功!") except: return JsonResponse(code="999998", msg="失败!")
def post(self, request): """ 启用项目 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result # 查找项目是否存在 try: obj = Project.objects.get(id=data["project_id"]) if not request.user.is_superuser and obj.user.is_superuser: return JsonResponse(code="999983", msg=str(obj) + "无操作权限!") obj.status = True obj.save() record_dynamic(project=data["project_id"], _type="禁用", operationObject="项目", user=request.user.pk, data=obj.name) return JsonResponse(code="999999", msg="成功") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!")
def post(self, request): """ 删除项目 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: for i in data["ids"]: try: obj = Project.objects.get(id=i) if not request.user.is_superuser and obj.user.is_superuser: return JsonResponse(code="999983", msg=str(obj) + "无操作权限!") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") for j in data["ids"]: obj = Project.objects.filter(id=j) obj.delete() return JsonResponse(code="999999", msg="成功") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!")
def del_history(request): """ 删除请求历史 project_id 项目ID api_id 接口ID history_id 请求历史ID :return: """ project_id = request.POST.get("project_id") api_id = request.POST.get("api_id") history_id = request.POST.get("history_id") if not project_id.isdecimal() or not api_id.isdecimal( ) or not history_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) obj = Project.objects.filter(id=project_id) if obj: obi = ApiInfo.objects.filter(id=api_id, project=project_id) if obi: obm = APIRequestHistory.objects.filter(id=history_id, apiInfo=api_id) if obm: obm.delete() api_record = ApiOperationHistory( apiInfo=ApiInfo.objects.get(id=api_id), user=User.objects.get(id=request.user.pk), description="删除请求历史记录") api_record.save() return JsonResponse(code_msg=GlobalStatusCode.success()) else: return JsonResponse( code_msg=GlobalStatusCode.history_not_exist()) else: return JsonResponse(code_msg=GlobalStatusCode.api_not_exist()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
def post(self, request): """ 添加项目配置 :param request: :return: """ data = request.data try: obj = Project.objects.get(id=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(obj) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") obi = ProjectConfig.objects.filter(name=data["name"], project=data["project_id"]) if obi: return JsonResponse(code="999997", msg="存在相同名称!") else: serializer = ProjectConfigSerializer(data=data) with transaction.atomic(): if serializer.is_valid(): # 外键project_id serializer.save(project=obj) # 记录动态 record_dynamic(project=data["project_id"], _type="添加", operationObject="配置", user=request.user.pk, data=data["name"]) return JsonResponse( data={"config_id": serializer.data.get("id")}, code="999999", msg="成功!") return JsonResponse(code="999998", msg="失败!")
def get(self, request): """ 获取请求历史 project_id 项目ID api_id 接口ID :return: """ project_id = request.GET.get("project_id") api_id = request.GET.get("api_id") if not project_id.isdecimal() or not api_id.isdecimal(): return JsonResponse(code="999996", msg="参数有误!") try: pro_data = Project.objects.get(id=project_id) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: obj = ApiInfo.objects.get(id=api_id, project=project_id) except ObjectDoesNotExist: return JsonResponse(code="999990", msg="接口不存在!") history = APIRequestHistory.objects.filter( api=obj).order_by("-requestTime")[:10] data = APIRequestHistorySerializer(history, many=True).data return JsonResponse(data=data, code="999999", msg="成功!")
def post(self, request): """ 删除项目配置 :param request: :return: """ data = request.data try: pro_data = Project.objects.get(id=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: for j in data["ids"]: obj = ProjectConfig.objects.filter(id=j) if obj: name = obj[0].name obj.delete() record_dynamic(project=data["project_id"], _type="删除", operationObject="配置", user=request.user.pk, data=name) return JsonResponse(code="999999", msg="成功!") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="配置不存在!")
def post(self, request): """ 修改接口分组名称 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: pro_data = Project.objects.get(id=data["project_id"]) if not request.user.is_superuser and pro_data.user.is_superuser: return JsonResponse(code="999983", msg="无操作权限!") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") # 根据项目id和host id查找,若存在则删除 obi = ApiGroupLevelFirst.objects.filter(id=data["id"], project=data["project_id"]) if obi: name = obi[0].name obi.delete() else: return JsonResponse(code="999991", msg="分组不存在!") record_dynamic(project=data["project_id"], _type="删除", operationObject="接口分组", user=request.user.pk, data="删除接口分组“%s”" % name) return JsonResponse(code="999999", msg="成功!")
def post(self, request): """ 添加用户 :param request: :return: """ data = request.data with transaction.atomic(): try: project = Project.objects.get(id=data["project_id"]) ids = data["ids"] for id in ids: user = User.objects.get(id=id) if int(data["group"]) == 0: ProjectMember.objects.filter(project=project, user=user).delete() else: group = Group.objects.get(id=data["group"]) members = ProjectMember.objects.filter(project=project, user=user) if len(members) > 0: members.update(group=group) else: ProjectMember.objects.create(project=project, user=user, group=group) return JsonResponse(code="999999", msg="成功!") except: logging.error(traceback.format_exc()) return JsonResponse(code="999996", msg="执行失败!")
def get(self, request): """ 接口分组 :param request: :return: """ project_id = request.GET.get("project_id") # 校验参数 if not project_id: return JsonResponse(code="999996", msg="参数有误!") if not project_id.isdecimal(): return JsonResponse(code="999996", msg="参数有误!") # 验证项目是否存在 try: pro_data = Project.objects.get(id=project_id) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") # 序列化结果 pro_data = ProjectSerializer(pro_data) # 校验项目状态 if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") # 查找项目下所有接口信息,并按id排序,序列化结果 obi = ApiGroupLevelFirst.objects.filter( project=project_id).order_by("id") serialize = ApiGroupLevelFirstSerializer(obi, many=True) return JsonResponse(data=serialize.data, code="999999", msg="成功!")
def get(self, request): """ 获取项目列表 :param request: :return: """ try: page_size = int(request.GET.get("page_size", 20)) page = int(request.GET.get("page", 1)) except (TypeError, ValueError): return JsonResponse(code_msg=GlobalStatusCode.page_not_int()) name = request.GET.get("name") if name: obi = Project.objects.filter(name__contains=name).order_by("id") else: obi = Project.objects.all().order_by("id") paginator = Paginator(obi, page_size) # paginator对象 total = paginator.num_pages # 总页数 try: obm = paginator.page(page) except PageNotAnInteger: obm = paginator.page(1) except EmptyPage: obm = paginator.page(paginator.num_pages) serialize = ProjectSerializer(obm, many=True) return JsonResponse(data={ "data": serialize.data, "page": page, "total": total }, code_msg=GlobalStatusCode.success())
def post(self, request): """ 导入swagger接口信息 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: pro_data = Project.objects.get(id=data["project_id"]) if not request.user.is_superuser and pro_data.user.is_superuser: return JsonResponse(code="999983", msg="无操作权限!") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: swagger_api(data["url"], data["project_id"], request.user) return JsonResponse(code="999999", msg="成功!") except Exception as e: logging.exception(e) return JsonResponse(code="999998", msg="失败!")
def post(self, request): """ 删除邮箱配置 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: pro_data = Project.objects.get(id=data["project_id"]) if not request.user.is_superuser and pro_data.user.is_superuser: return JsonResponse(code="999983", msg="无操作权限!") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") AutomationReportSendConfig.objects.filter( project=data["project_id"]).delete() # 记录动态 record_dynamic(project=data["project_id"], _type="删除", operationObject="邮箱", user=request.user.pk, data="删除邮箱配置") return JsonResponse(code="999999", msg="成功!")
def post(self, request): """ 修改接口所属分组 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: pro_data = Project.objects.get(id=data["project_id"]) if not request.user.is_superuser and pro_data.user.is_superuser: return JsonResponse(code="999983", msg="无操作权限!") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") id_list = Q() for i in data["ids"]: id_list = id_list | Q(id=i) api_list = ApiInfo.objects.filter(id_list, project=data["project_id"]) with transaction.atomic(): api_list.update(apiGroupLevelFirst=ApiGroupLevelFirst.objects.get( id=data["apiGroupLevelFirst_id"])) name_list = [] for j in api_list: name_list.append(str(j.name)) record_dynamic(project=data["project_id"], _type="修改", operationObject="接口", user=request.user.pk, data="修改接口分组,列表“%s”" % name_list) return JsonResponse(code="999999", msg="成功!")
def get(self, request): """ 获取执行测试时间 :param request: :return: """ project_id = request.GET.get("project_id") if not project_id: return JsonResponse(code="999996", msg="参数有误!") if not project_id.isdecimal(): return JsonResponse(code="999996", msg="参数有误!") try: pro_data = Project.objects.get(id=project_id) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: data = AutomationTaskRunTimeSerializer( AutomationTaskRunTime.objects.filter( project=project_id).order_by("-startTime")[:10], many=True).data except IndexError: data = AutomationTaskRunTimeSerializer( AutomationTaskRunTime.objects.filter( project=project_id).order_by("-startTime"), many=True).data return JsonResponse(code="999999", msg="成功!", data=data)
def post(self, request): """ 添加接口请求历史 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: pro_data = Project.objects.get(id=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: obj = ApiInfo.objects.get(id=data["api_id"], project=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999990", msg="接口不存在!") serialize = APIRequestHistoryDeserializer(data=data) if serialize.is_valid(): serialize.save(api=obj) return JsonResponse(code="999999", msg="成功!") return JsonResponse(code="999998", msg="失败!")
def post(self, request): """ 删除接口请求历史 :param request: :return: """ data = JSONParser().parse(request) result = self.parameter_check(data) if result: return result try: pro_data = Project.objects.get(id=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: obj = ApiInfo.objects.get(id=data["api_id"], project=data["project_id"]) except ObjectDoesNotExist: return JsonResponse(code="999990", msg="接口不存在!") obm = APIRequestHistory.objects.filter(id=data["id"], api=data["api_id"]) if obm: obm.delete() api_record = ApiOperationHistory( api=obj, user=User.objects.get(id=request.user.pk), description="删除请求历史记录") api_record.save() return JsonResponse(code="999999", msg="成功!") else: return JsonResponse(code="999988", msg="请求历史不存在!")
def post(self, request): """ 删除项目 :param request: :return: """ data = request.data result = self.parameter_check(data) if result: return result try: for i in data["ids"]: try: obj = Project.objects.get(id=i) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") for j in data["ids"]: obj = Project.objects.filter(id=j) obj.delete() my_user_cron = CronTab(user=True) my_user_cron.remove_all(comment=j) my_user_cron.write() return JsonResponse(code="999999", msg="成功") except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!")
def enable_host(request): """ 启用host project_id 项目ID host_id 地址ID :return: """ project_id = request.POST.get('project_id') host_id = request.POST.get('host_id') if not project_id.isdecimal() or not host_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) obj = Project.objects.filter(id=project_id) if obj: obi = GlobalHost.objects.filter(id=host_id, project=project_id) if obi: obi.update(status=True) record = ProjectDynamic(project=Project.objects.get(id=project_id), type='启用', operationObject='HOST', user=User.objects.get(id=request.user.pk), description='启用HOST“%s”' % obi[0].name) record.save() return JsonResponse(code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.host_not_exist()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
def get(self, request): """ 获取最近十次的测试数据 project_id 项目ID :param request: :return: """ project_id = request.GET.get("project_id") if not project_id: return JsonResponse(code="999996", msg="参数有误!") if not project_id.isdecimal(): return JsonResponse(code="999996", msg="参数有误!") try: pro_data = Project.objects.get(id=project_id) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") try: data = AutomationTestLatelyTenTimeSerializer( AutomationTaskRunTime.objects.filter( project=project_id).order_by("-startTime")[:10], many=True).data except IndexError: data = AutomationTestLatelyTenTimeSerializer( AutomationTaskRunTime.objects.filter( project=project_id).order_by("-startTime"), many=True).data for i in data: result = AutomationCaseTestResult.objects.filter( testTime=i["startTime"]) _pass = 0 fail = 0 error = 0 for j in result: if j.result == "PASS": _pass = _pass + 1 elif j.result == "ERROR": error = error + 1 elif j.result == "FAIL": fail = fail + 1 total = _pass + error + fail if total: data[data.index(i)]["fail"] = "%.4f" % (fail / total) data[data.index(i)]["error"] = "%.4f" % (error / total) data[data.index(i)]["pass"] = "******" % (1 - fail / total - error / total) data.reverse() return JsonResponse(code="999999", msg="成功!", data=data)