def post(self, request): """ 添加Host :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 = GlobalHost.objects.filter(name=data["name"], project=data["project_id"]) if obi: return JsonResponse(code_msg=GlobalStatusCode.name_repetition()) else: serializer = GlobalHostSerializer(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={"host_id": serializer.data.get("id")}, code_msg=GlobalStatusCode.success()) 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: 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 update_project(request): """ 修改项目 project_id: 项目唯一id name: 项目名称 v: 项目版本 type: 项目类型 description: 项目描述 :return: """ project_id = request.POST.get('project_id') if not project_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) name = request.POST.get('name') version = request.POST.get('v') _type = request.POST.get('type') description = request.POST.get('description') if _type in ['Web', 'App']: obj = Project.objects.filter(id=project_id) if obj: obi = Project.objects.filter(name=name).exclude(id=project_id) if len(obi) == 0: obj.update(name=name, version=version, type=_type, description=description, user=User.objects.get(id=request.user.pk)) record = ProjectDynamic( project=Project.objects.get(id=project_id), type='修改', operationObject='项目', user=User.objects.get(id=request.user.pk), description='修改项目“%s”' % name) record.save() return JsonResponse(code_msg=GlobalStatusCode.success()) else: return JsonResponse( code_msg=GlobalStatusCode.name_repetition()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist()) else: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
def update_project(request): """ 修改项目 project_id: 项目唯一id name: 项目名称 v: 项目版本 type: 项目类型 description: 项目描述 :return: """ project_id = request.POST.get("project_id") if not project_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) name = request.POST.get("name") version = request.POST.get("v") _type = request.POST.get("type") description = request.POST.get("description") if _type in ["Web", "App"]: obj = Project.objects.filter(id=project_id) if obj: obi = Project.objects.filter(name=name).exclude(id=project_id) if len(obi) == 0: obj.update(name=name, version=version, type=_type, description=description, user=User.objects.get(id=request.user.pk)) record = ProjectDynamic( project=Project.objects.get(id=project_id), type="修改", operationObject="项目", user=User.objects.get(id=request.user.pk), description="修改项目“%s”" % name) record.save() return JsonResponse(code_msg=GlobalStatusCode.success()) else: return JsonResponse( code_msg=GlobalStatusCode.name_repetition()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist()) else: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
def add_project(request): """ 新增项目 name: 项目名称 v: 项目版本 type: 项目类型 description: 项目描述 :return: """ name = request.POST.get('name') version = request.POST.get('v') _type = request.POST.get('type') description = request.POST.get('description') if _type in ['Web', 'App']: obj = Project.objects.filter(name=name) if len(obj) == 0: with transaction.atomic(): project = Project(name=name, version=version, type=_type, description=description, user=User.objects.get(id=request.user.pk)) project.save() ProjectMember( permissionType='admin', project=Project.objects.get(id=project.pk), user=User.objects.get(id=request.user.pk)).save() record = ProjectDynamic( project=Project.objects.get(id=project.pk), type='创建', operationObject='项目', user=User.objects.get(id=request.user.pk), description='创建项目“%s”' % name) record.save() return JsonResponse(data={'project_id': project.pk}, code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.name_repetition()) else: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
def add_project(request): """ 新增项目 name: 项目名称 v: 项目版本 type: 项目类型 description: 项目描述 :return: """ name = request.POST.get("name") version = request.POST.get("v") _type = request.POST.get("type") description = request.POST.get("description") if _type in ["Web", "App"]: obj = Project.objects.filter(name=name) if len(obj) == 0: with transaction.atomic(): project = Project(name=name, version=version, type=_type, description=description, user=User.objects.get(id=request.user.pk)) project.save() ProjectMember( permissionType="admin", project=Project.objects.get(id=project.pk), user=User.objects.get(id=request.user.pk)).save() record = ProjectDynamic( project=Project.objects.get(id=project.pk), type="创建", operationObject="项目", user=User.objects.get(id=request.user.pk), description="创建项目“%s”" % name) record.save() return JsonResponse(data={"project_id": project.pk}, code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.name_repetition()) else: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong())
def update_host(request): """ 修改host project_id 项目id host_id 地址ID name 地址名称 host 地址域名 description 描述 :return: """ project_id = request.POST.get('project_id') host_id = request.POST.get('host_id') if not host_id.isdecimal() or not project_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) name = request.POST.get('name') host = request.POST.get('host') desc = request.POST.get('description') obj = Project.objects.filter(id=project_id) if obj: obi = GlobalHost.objects.filter(id=host_id, project=project_id) if obi: obm = GlobalHost.objects.filter(name=name).exclude(id=host_id) if len(obm) == 0: obi.update(project=Project.objects.get(id=project_id), name=name, host=host, description=desc) record = ProjectDynamic( project=Project.objects.get(id=project_id), type='修改', operationObject='HOST', user=User.objects.get(id=request.user.pk), description='修改HOST“%s”' % name) record.save() return JsonResponse(code_msg=GlobalStatusCode.success()) else: return JsonResponse( code_msg=GlobalStatusCode.name_repetition()) else: return JsonResponse(code_msg=GlobalStatusCode.host_not_exist()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
def add_host(request): """ 新增host project_id 项目ID name host名称 host host地址 description host描述 :return: """ project_id = request.POST.get('project_id') if not project_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) name = request.POST.get('name') host = request.POST.get('host') desc = request.POST.get('description') obj = Project.objects.filter(id=project_id) if obj: obi = GlobalHost.objects.filter(name=name, project=project_id) if obi: return JsonResponse(code_msg=GlobalStatusCode.name_repetition()) else: hosts = GlobalHost(project=Project.objects.get(id=project_id), name=name, host=host, description=desc) hosts.save() record = ProjectDynamic(project=Project.objects.get(id=project_id), type='新增', operationObject='HOST', user=User.objects.get(id=request.user.pk), description='新增HOST“%s”' % name) record.save() return JsonResponse(data={'host_id': hosts.pk}, code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
def add_api(request): """ 新增接口信息 project_id 项目ID first_group_id 一级分组ID second_group_id 二级分组ID name 接口名称 httpType HTTP/HTTPS requestType 请求方式 address 请求地址 headDict 头文件 requestParameterType 参数请求格式 requestList 请求参数列表 responseList 返回参数列表 mockStatus mockhttp状态 code mock代码 description 描述 :return: """ data = json.loads(request.body) if not data["project_id"] or not data["first_group_id"] or not data["name"] or not data["httpType"] or not \ data["requestType"] or not data["address"] or not data["requestParameterType"] or not data["status"]: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if data["status"] not in ["True", "False"]: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if not isinstance(data["project_id"], int) or not isinstance( data["first_group_id"], int): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if data["httpType"] not in ["HTTP", "HTTPS"]: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if data["requestType"] not in ["POST", "GET", "PUT", "DELETE"]: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if data["requestParameterType"] not in ["form-data", "raw", "Restful"]: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) obj = Project.objects.filter(id=data["project_id"]) if obj: obi = ApiInfo.objects.filter(name=data["name"], project=data["project_id"]) if obi: return JsonResponse(code_msg=GlobalStatusCode.name_repetition()) else: try: with transaction.atomic(): first_group = ApiGroupLevelFirst.objects.filter( id=data["first_group_id"], project=data["project_id"]) if len(first_group) == 0: return JsonResponse( code_msg=GlobalStatusCode.group_not_exist()) if data["first_group_id"] and data["second_group_id"]: if not isinstance(data["second_group_id"], int): return JsonResponse( code_msg=GlobalStatusCode.parameter_wrong()) second_group = ApiGroupLevelSecond.objects.filter( id=data["second_group_id"], apiGroupLevelFirst=data["first_group_id"]) if len(second_group) == 0: return JsonResponse( code_msg=GlobalStatusCode.group_not_exist()) try: oba = ApiInfo( project=Project.objects.get( id=data["project_id"]), apiGroupLevelFirst=ApiGroupLevelFirst.objects. get(id=data["first_group_id"]), apiGroupLevelSecond=ApiGroupLevelSecond. objects.get(id=data["second_group_id"]), name=data["name"], httpType=data["httpType"], status=data["status"], requestType=data["requestType"], apiAddress=data["address"], requestParameterType=data[ "requestParameterType"], mockCode=data["mockStatus"], data=data["code"], userUpdate=User.objects.get( id=request.user.pk), description=data["desc"]) except KeyError: return JsonResponse( code_msg=GlobalStatusCode.parameter_wrong()) else: return JsonResponse( code_msg=GlobalStatusCode.parameter_wrong()) oba.save() if len(data["headDict"]): for i in data["headDict"]: try: if i["name"]: ApiHead(api=ApiInfo.objects.get(id=oba.pk), name=i["name"], value=i["value"]).save() except KeyError: logging.exception("Error") return JsonResponse(GlobalStatusCode.fail()) if data["requestParameterType"] == "form-data": if len(data["requestList"]): for i in data["requestList"]: try: # i = i.replace("true", "True").replace("false", "False") if i["name"]: ApiParameter( api=ApiInfo.objects.get(id=oba.pk), name=i["name"], value=i["value"], required=i["required"], _type=i["_type"], restrict=i["restrict"], description=i["description"]).save( ) except KeyError: logging.exception("Error") return JsonResponse( code_msg=GlobalStatusCode.fail()) else: if len(data["requestList"]): ApiParameterRaw(api=ApiInfo.objects.get(id=oba.pk), data=data["requestList"]).save() if len(data["responseList"]): for i in data["responseList"]: try: # i = i.replace("true", "True").replace("false", "False") if i["name"]: ApiResponse( api=ApiInfo.objects.get(id=oba.pk), name=i["name"], value=i["value"], required=i["required"], _type=i["_type"], description=i["description"]).save() except KeyError: logging.exception("Error") return JsonResponse( code_msg=GlobalStatusCode.fail()) record_dynamic(data["project_id"], "新增", "接口", "新增接口“%s”" % data["name"]) api_record = ApiOperationHistory( apiInfo=ApiInfo.objects.get(id=oba.pk), user=User.objects.get(id=request.user.pk), description="新增接口\"%s\"" % data["name"]) api_record.save() return JsonResponse(data={"api_id": oba.pk}, code_msg=GlobalStatusCode.success()) except Exception as e: logging.exception("error") logging.error(e) return JsonResponse(code_msg=GlobalStatusCode.fail()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
def add_api(request): """ 新增接口信息 project_id 项目ID first_group_id 一级分组ID second_group_id 二级分组ID name 接口名称 httpType HTTP/HTTPS requestType 请求方式 address 请求地址 headDict 头文件 requestParameterType 参数请求格式 requestList 请求参数列表 responseList 返回参数列表 mockStatus mockhttp状态 code mock代码 description 描述 :return: """ project_id = request.POST.get('project_id') first_group_id = request.POST.get('first_group_id') second_group_id = request.POST.get('second_group_id') name = request.POST.get('name') http_type = request.POST.get('httpType') request_type = request.POST.get('requestType') address = request.POST.get('address') status = request.POST.get('status') head_dict = request.POST.get('headDict') request_parameter_type = request.POST.get('requestParameterType') request_list = request.POST.get('requestList') response_list = request.POST.get('responseList') mock_status = request.POST.get('mockStatus') code = request.POST.get('code') desc = request.POST.get('description') if status not in ['True', 'False']: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if not project_id.isdecimal() or not first_group_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if http_type not in ['HTTP', 'HTTPS']: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if request_type not in ['POST', 'GET', 'PUT', 'DELETE']: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) if request_parameter_type not in ['form-data', 'raw', 'Restful']: return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) obj = Project.objects.filter(id=project_id) if obj: obi = ApiInfo.objects.filter(name=name, project=project_id) if obi: return JsonResponse(code_msg=GlobalStatusCode.name_repetition()) else: try: with transaction.atomic(): first_group = ApiGroupLevelFirst.objects.filter( id=first_group_id, project=project_id) if len(first_group) == 0: return JsonResponse( code_msg=GlobalStatusCode.group_not_exist()) if first_group_id and second_group_id: if not second_group_id.isdecimal(): return JsonResponse( code_msg=GlobalStatusCode.parameter_wrong()) second_group = ApiGroupLevelSecond.objects.filter( id=second_group_id, apiGroupLevelFirst=first_group_id) if len(second_group) == 0: return JsonResponse( code_msg=GlobalStatusCode.group_not_exist()) oba = ApiInfo( project=Project.objects.get(id=project_id), apiGroupLevelFirst=ApiGroupLevelFirst.objects.get( id=first_group_id), apiGroupLevelSecond=ApiGroupLevelSecond.objects. get(id=second_group_id), name=name, httpType=http_type, status=status, requestType=request_type, apiAddress=address, requestParameterType=request_parameter_type, mockCode=mock_status, data=code, userUpdate=User.objects.get(id=request.user.pk), description=desc) else: return JsonResponse( code_msg=GlobalStatusCode.parameter_wrong()) oba.save() if head_dict: head = re.findall('{.*?}', head_dict) for i in head: try: i = eval(i) if i['name']: ApiHead(api=ApiInfo.objects.get(id=oba.pk), name=i['name'], value=i['value']).save() except: logging.exception("Error") return JsonResponse(GlobalStatusCode.fail()) if request_parameter_type == 'form-data': if request_list: request_list = re.findall('{.*?}', request_list) for i in request_list: try: i = eval( i.replace("true", "True").replace( "false", "False")) if i['name']: ApiParameter( api=ApiInfo.objects.get(id=oba.pk), name=i['name'], value=i['value'], required=i['required'], _type=i['_type'], restrict=i['restrict'], description=i['description']).save( ) except Exception as e: logging.exception("Error") return JsonResponse( code_msg=GlobalStatusCode.fail()) else: if request_list: ApiParameterRaw(api=ApiInfo.objects.get(id=oba.pk), data=request_list).save() if response_list: response_list = re.findall('{.*?}', response_list) for i in response_list: try: i = eval( i.replace("true", "True").replace( "false", "False")) if i['name']: ApiResponse( api=ApiInfo.objects.get(id=oba.pk), name=i['name'], value=i['value'], required=i['required'], _type=i['_type'], description=i['description']).save() except Exception as e: logging.exception("Error") return JsonResponse( code_msg=GlobalStatusCode.fail()) record_dynamic(project_id, '新增', '接口', '新增接口“%s”' % name) api_record = ApiOperationHistory( apiInfo=ApiInfo.objects.get(id=oba.pk), user=User.objects.get(id=request.user.pk), description='新增接口"%s"' % name) api_record.save() return JsonResponse(data={'api_id': oba.pk}, code_msg=GlobalStatusCode.success()) except Exception as e: logging.exception('error') logging.error(e) return JsonResponse(code_msg=GlobalStatusCode.fail()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())