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())
Esempio n. 2
0
 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())
Esempio n. 3
0
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())
Esempio n. 5
0
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())
Esempio n. 7
0
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())
Esempio n. 8
0
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())
Esempio n. 9
0
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())
Esempio n. 10
0
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())