コード例 #1
0
def module_search(request):
    if request.method == 'POST':
        # 当要搜索某个项目下的模块时,可通过传入项目id进行获取
        project_id = request.POST.get('project_id')
        if project_id != None:
            modules = ModuleInfo.objects.all().filter(
                belong_project_id=project_id)
            count = modules.count()
            data = dataToJson([model_to_dict(i) for i in modules])
            return JsonResponse(
                get_ajax_msg(1, 1, '搜索成功', {
                    'modules': data,
                    'count': count
                }))

        index = int(request.POST.get('index'))
        project_name = request.POST.get('project_name')
        module_name = request.POST.get('module_name')
        test_person = request.POST.get('test_person')
        project_name_dic = {}
        if len(project_name) == 0 and len(module_name) == 0 and len(
                test_person) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '搜索条件无效'))
        else:
            modules = ModuleInfo.objects.all()
            if len(project_name) != 0 and project_name != '项目名称':
                modules = modules.filter(
                    belong_project__project_name__contains=project_name)
            if len(module_name) != 0:
                modules = modules.filter(module_name__contains=module_name)
            if len(test_person) != 0:
                modules = modules.filter(test_user__contains=test_person)
        if modules is None:
            return JsonResponse(get_ajax_msg(0, 0, '查询出错'))
        if modules is not None and len(modules) > 0:
            modules = filter_modules_for_user(request.user,
                                              modules.order_by('-id'),
                                              AUTH_VIEW)  # 根据用户权限筛选模块
            for module in modules:
                proID = module.belong_project_id
                proName = module.belong_project.project_name
                project_name_dic[str(proID)] = proName
        count = len(modules)
        modules = pagination_for_objects(modules, index)
        data = dataToJson([model_to_dict(i) for i in modules])
        return JsonResponse(
            get_ajax_msg(
                1, 1, '搜索成功', {
                    'modules': data,
                    'count': count,
                    'currPage': index,
                    'proInfo': project_name_dic
                }))
コード例 #2
0
def module_list(request):
    if request.method == 'GET':
        return render(request, 'api/module_list.html')
    elif request.method == 'POST':
        index = int(request.POST.get('index'))
        project_name_dic = {}
        # 根据用户权限筛选模块
        objects = filter_modules_for_user(request.user,
                                          ModuleInfo.objects.order_by('-id'),
                                          AUTH_VIEW)
        modules = pagination_for_objects(objects, index)
        if modules is not None and len(modules) > 0:
            for module in modules:
                project_id = module.belong_project_id
                project_name = module.belong_project.project_name
                project_name_dic[str(project_id)] = project_name
        count = len(objects)
        data = dataToJson([model_to_dict(i) for i in modules])
        return JsonResponse(
            get_ajax_msg(
                1, 1, '获取模块列表成功', {
                    'modules': data,
                    'count': count,
                    'currPage': index,
                    'proInfo': project_name_dic
                }))
コード例 #3
0
def case_query(request):
    if request.method == "POST":
        case_id = request.POST.get('id')
        cases = TestCaseInfo.objects.filter(id=case_id)
        moduleid_to_projectid = {}
        moduleid_to_modulename = {}
        if len(cases) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '没有这条数据', {}))
        if cases is not None and len(cases) > 0:
            for case in cases:
                # 所属模块id对应模块名称
                module_id = case.belong_module_id
                module_name = case.belong_module.module_name
                moduleid_to_modulename[str(module_id)] = module_name
                # 所属模块id对应项目id
                project_id = case.belong_module.belong_project_id
                moduleid_to_projectid[str(module_id)] = project_id
        cases = filter_cases_for_user(request.user, cases, AUTH_VIEW)
        data = dataToJson([model_to_dict(i) for i in cases])
        data = json.loads(data)
        return JsonResponse(
            get_ajax_msg(
                1, 1, '获取用例信息成功', {
                    'cases': data,
                    'proInfo': moduleid_to_projectid,
                    'moduleInfo': moduleid_to_modulename
                }))
コード例 #4
0
def project_search(request):
    if request.method == "POST":
        project_name = request.POST.get('project_name')
        person_name = request.POST.get('person_name')
        index = int(request.POST.get('index'))
        if len(project_name) == 0 and len(person_name) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '搜索条件无效'))
        else:
            projects = ProjectInfo.objects.all()
            if len(project_name) > 0:
                projects = projects.filter(project_name__contains=project_name)
            if len(person_name) > 0:
                projects = projects.filter(
                    responsible_name__contains=person_name)
        if projects is None:
            return JsonResponse(get_ajax_msg(0, 0, '查询出错'))
        objects = get_objects_for_user(request.user, AUTH_VIEW,
                                       projects)  # 根据用户权限筛选项目对象
        projects = pagination_for_objects(objects, index)
        count = objects.count()
        data = dataToJson([model_to_dict(i) for i in projects])
        return JsonResponse(
            get_ajax_msg(1, 1, '搜索成功', {
                'projects': data,
                'count': count,
                'currPage': index
            }))
コード例 #5
0
def task_list(request):
    if request.method == "GET":
        return render(request, 'api/task_list.html')
    elif request.method == "POST":
        index = int(request.POST.get('index'))
        env_name_dic = {}
        project_name_dic = {}
        module_name_dic = {}
        results = filter_tasks_for_user(
            request.user,
            TaskInfo.objects.filter().order_by('-id'), AUTH_VIEW)
        tasks = pagination_for_objects(results, index)
        if tasks is not None and len(tasks) > 0:
            for task in tasks:
                append_env_dict(task, env_name_dic)
                append_project_dict(task, project_name_dic)
                append_module_dict(task, module_name_dic)
        count = len(results)
        task_info_list = []
        for task in tasks:
            task_dict = task2Dict(task)
            task_info_list.append(task_dict)

        data = dataToJson(task_info_list)
        return JsonResponse(
            get_ajax_msg(
                1, 1, '获取任务列表成功', {
                    'tasks': data,
                    'count': count,
                    'currPage': index,
                    'envInfo': env_name_dic,
                    'proInfo': project_name_dic,
                    'moduleInfo': module_name_dic
                }))
コード例 #6
0
def env_query(request):
    if request.method == "POST":
        env_info = json.loads(request.body.decode('utf-8'))
        env_id = env_info['id']
        envs = EnvInfo.objects.filter(id=env_id)
        if len(envs) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '没有这条数据', {}))
        data = dataToJson([model_to_dict(i) for i in envs])
        return JsonResponse(get_ajax_msg(1, 1, '获取环境信息成功', {'envs': data}))
コード例 #7
0
def module_query(request):
    if request.method == 'POST':
        module_id = request.POST.get('id')
        modules = ModuleInfo.objects.filter(id=module_id)
        if len(modules) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '没有这条数据', {}))
        modules = filter_modules_for_user(request.user, modules, AUTH_VIEW)
        data = dataToJson([model_to_dict(i) for i in modules])
        return JsonResponse(get_ajax_msg(1, 1, '获取模块成功', {'modules': data}))
コード例 #8
0
def project_query(request):
    if request.method == 'POST':
        project_id = request.POST.get('id')
        projects = ProjectInfo.objects.filter(id=project_id)
        if len(projects) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '没有这条数据', {}))
        projects = get_objects_for_user(request.user, AUTH_VIEW,
                                        projects)  # 根据用户权限筛选项目对象
        data = dataToJson([model_to_dict(i) for i in projects])
        return JsonResponse(get_ajax_msg(1, 1, '获取项目成功', {'projects': data}))
コード例 #9
0
def task_monitor(request):
    if request.method == 'GET':
        return render(request, 'api/task_monitor.html')
    if request.method == 'POST':
        index = int(request.POST.get('index'))
        search_task_name = request.POST.get('task_name')
        start = (index - 1) * 10
        res = requests.get('http://127.0.0.1:5555/api/tasks?limit=1000'
                           )  # 控制查询最大数目为1000,以解决查询卡顿的问题
        results = json.loads(res.content)
        monitor_result_list = []
        for result in results.values():
            try:
                task_dict = {}
                args = result['args'].split(',')
                # 获取任务信息
                infos = args[1].split('-')
                if '定时任务' in infos[0]:
                    task_name = infos[1]
                    case_name = infos[2]
                    report_uuid = args[4].split("'")[1]
                    task_dict['task_name'] = task_name
                    task_dict['case_name'] = case_name
                    task_dict['state'] = result['state']
                    task_dict['result'] = result['result']
                    task_dict['received'] = result['received']
                    task_dict['started'] = result['started']
                    task_dict['runtime'] = result['runtime']
                    task_dict['report_uuid'] = report_uuid
                    if search_task_name is not None:
                        if search_task_name in task_dict['task_name']:
                            monitor_result_list.append(task_dict)
                    else:
                        monitor_result_list.append(task_dict)
            except Exception as e:
                print('数据解析异常:' + e)
        # 根据任务开始时间降序排列
        for i in range(len(monitor_result_list) - 1):
            for j in range(len(monitor_result_list) - i - 1):
                if monitor_result_list[j]['received'] < monitor_result_list[
                        j + 1]['received']:
                    monitor_result_list[j], monitor_result_list[
                        j + 1] = monitor_result_list[j +
                                                     1], monitor_result_list[j]
        data = dataToJson(monitor_result_list[start:start + 10])
        return JsonResponse(
            get_ajax_msg(
                1, 1, '获取监控任务列表成功', {
                    'monitors': data,
                    'count': len(monitor_result_list),
                    'currPage': index
                }))
コード例 #10
0
def task_query(request):
    if request.method == 'POST':
        task_id = request.POST.get('id')
        tasks = TaskInfo.objects.filter(id=task_id)
        if len(tasks) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '没有这条数据', {}))
        tasks = filter_tasks_for_user(request.user, tasks, AUTH_VIEW)
        task_info_list = []
        for task in tasks:
            task_dict = task2Dict(task)
            task_info_list.append(task_dict)
        data = dataToJson(task_info_list)
        return JsonResponse(get_ajax_msg(1, 1, '获取任务成功', {'tasks': data}))
コード例 #11
0
def task_search(request):
    if request.method == 'POST':
        index = int(request.POST.get('index'))
        task_name = request.POST.get('task_name')
        project_name = request.POST.get('project_name')
        module_name = request.POST.get('module_name')
        tasks = None
        env_name_dic = {}
        project_name_dic = {}
        module_name_dic = {}
        count = 0
        if len(task_name) == 0 and len(project_name) == 0 and len(
                module_name) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '搜索条件无效'))
        else:
            tasks = TaskInfo.objects.all()
            if len(module_name) != 0 and module_name != '模块名称':
                tasks = tasks.filter(
                    belong_module__module_name__contains=module_name)
            if len(project_name) != 0 and project_name != '项目名称':
                tasks = tasks.filter(
                    belong_project__project_name__contains=project_name)
            if len(task_name) != 0:
                tasks = tasks.filter(task_name__contains=task_name)
        if tasks == None:
            return JsonResponse(get_ajax_msg(0, 0, '查询出错'))
        if tasks != None and len(tasks) > 0:
            tasks = filter_tasks_for_user(request.user, tasks.order_by('-id'),
                                          AUTH_VIEW)  # 根据用户权限筛选模块
            for task in tasks:
                append_env_dict(task, env_name_dic)
                append_project_dict(task, project_name_dic)
                append_module_dict(task, module_name_dic)
        count = len(tasks)
        tasks = pagination_for_objects(tasks, index)
        task_info_list = []
        for task in tasks:
            task_dict = task2Dict(task)
            task_info_list.append(task_dict)

        data = dataToJson(task_info_list)
        return JsonResponse(
            get_ajax_msg(
                1, 1, '搜索成功', {
                    'tasks': data,
                    'count': count,
                    'currPage': index,
                    'envInfo': env_name_dic,
                    'proInfo': project_name_dic,
                    'moduleInfo': module_name_dic
                }))
コード例 #12
0
def project_list(request):
    if request.method == "GET":
        return render(request, 'api/project_list.html')
    elif request.method == "POST":
        index = int(request.POST.get('index'))
        objects = get_objects_for_user(request.user, AUTH_VIEW).all()
        projects = pagination_for_objects(objects, index)
        count = objects.count()
        data = dataToJson([model_to_dict(i) for i in projects])
        return JsonResponse(
            get_ajax_msg(1, 1, '获取工程列表成功', {
                'projects': data,
                'count': count,
                'currPage': index
            }))
コード例 #13
0
def get_debugtalk_list(index):
    project_name_dic = {}
    if index == -1:
        debugTalks = DebugTalk.objects.filter().order_by('-id')
    elif index >= 0:
        start = (index - 1) * 10
        debugTalks = DebugTalk.objects.filter().order_by('-id')[start:start +
                                                                10]

        for debugTalk in debugTalks:
            project_id = debugTalk.belong_project_id
            project_name = debugTalk.belong_project.project_name
            project_name_dic[str(project_id)] = project_name
    count = DebugTalk.objects.filter().all().count()
    data = dataToJson([to_dict(i) for i in debugTalks])
    return data, project_name_dic, count
コード例 #14
0
def case_list(request):
    if request.method == "GET":
        # 拼装项目信息返回前端使用(编辑用例的模态框内使用)
        projects = ProjectInfo.objects.all().order_by('id')
        context = {}
        context['projects'] = []
        for project in projects:
            context['projects'].append({
                'project_name': project.project_name,
                'project_id': project.id
            })
        return render(request, 'api/case_list.html', context)
    elif request.method == 'POST':
        index = int(request.POST.get('index'))
        project_name_dic = {}
        module_name_dic = {}
        # 根据用户权限筛选用例
        results = filter_cases_for_user(
            request.user,
            TestCaseInfo.objects.filter().order_by('-id'), AUTH_VIEW)
        cases = pagination_for_objects(results, index)

        if cases is not None and len(cases) > 0:
            for case in cases:
                # 所属模块id对应模块名称
                module_id = case.belong_module_id
                module_name = case.belong_module.module_name
                module_name_dic[str(module_id)] = module_name
                # 所属模块id对应项目名称
                project_name = case.belong_module.belong_project.project_name
                project_name_dic[str(module_id)] = project_name
        count = len(results)
        tempData = [model_to_dict(i) for i in cases]
        del_fields(tempData, [
            'variables', 'parameters', 'hooks', 'url', 'request_data',
            'headers', 'extract', 'validate', 'include'
        ])
        data = dataToJson(tempData)
        return JsonResponse(
            get_ajax_msg(
                1, 1, '获取用例列表成功', {
                    'cases': data,
                    'count': count,
                    'currPage': index,
                    'proInfo': project_name_dic,
                    'moduleInfo': module_name_dic
                }))
コード例 #15
0
def case_search_with_id(request):
    if request.method == 'POST':
        project_id = request.POST.get('project_id', 0)
        module_id = request.POST.get('module_id', 0)
        case_id = request.POST.get('case_id', 0)
        cases = None
        project_name_dic = {}
        module_name_dic = {}
        count = 0
        if case_id != 0:
            cases = TestCaseInfo.objects.filter(id=case_id)
        elif module_id != 0:
            cases = TestCaseInfo.objects.filter(belong_module_id=module_id)
        elif project_id != 0:
            cases = TestCaseInfo.objects.filter(
                belong_module__belong_project__id=project_id)
        if cases is None:
            return JsonResponse(get_ajax_msg(0, 0, '查询出错'))
        cases = filter_cases_for_user(request.user, cases.order_by('-id'),
                                      AUTH_VIEW)
        if cases != None and len(cases) > 0:
            for case in cases:
                # 所属模块id对应模块名称
                module_id = case.belong_module_id
                module_name = case.belong_module.module_name
                module_name_dic[str(module_id)] = module_name
                # 所属模块id对应项目名称
                project_name = case.belong_module.belong_project.project_name
                project_name_dic[str(module_id)] = project_name
        count = len(cases)
        tempData = [model_to_dict(i) for i in cases]
        del_fields(tempData, [
            'variables', 'parameters', 'hooks', 'url', 'request_data',
            'headers', 'extract', 'validate', 'include'
        ])
        data = dataToJson(tempData)
        return JsonResponse(
            get_ajax_msg(
                1, 1, '搜索成功', {
                    'cases': data,
                    'count': count,
                    'proInfo': project_name_dic,
                    'moduleInfo': module_name_dic
                }))
    elif request.method == 'GET':
        pass
コード例 #16
0
ファイル: operation.py プロジェクト: zjd2626/Joy_QA_Platform
def user_list_operation(request):
    if request.method == 'POST':
        index = int(request.POST.get('index'))
        if index == -1:
            users = UserInfo.objects.filter().order_by('-id')
        elif index >= 0:
            start = (index - 1) * 10
            users = UserInfo.objects.filter().order_by('-id')[start:start + 10]
        user_list = []
        for user in users:
            if user.username != 'AnonymousUser':  # 不返回匿名用户
                user_dict = {}
                user_dict["user_id"] = user.id
                user_dict["user_name"] = user.username
                user_list.append(user_dict)
        data = dataToJson(user_list)
        return JsonResponse(get_ajax_msg(1, 1, '获取用户列表成功', {'users': data}))
コード例 #17
0
def env_search(request):
    if request.method == "POST":
        case_id = request.POST.get('case_id')
        belong_project = 0
        if case_id is not None:
            # 通过测试用例id查询所能用的环境
            cases = TestCaseInfo.objects.filter(id=case_id)
            if len(cases) == 0:
                return JsonResponse(get_ajax_msg(0, 0, '没有这条用例!', {}))
            else:
                case = cases[0]
                belong_project = case.belong_module.belong_project_id
        else:
            belong_project = request.POST.get('project_id')
        if belong_project is None:
            return JsonResponse(get_ajax_msg(0, 0, '数据无效', {}))
        envs = EnvInfo.objects.filter(belong_project_id=belong_project)
        data = dataToJson([model_to_dict(i) for i in envs])
        return JsonResponse(get_ajax_msg(1, 1, '获取用环境息成功', {'envs': data}))
コード例 #18
0
def fail_task_list(request):
    if request.method == "POST":
        failRecords = filter_fail_records_for_user(
            request.user,
            TaskFailedRecord.objects.all().order_by('-id')[0:20], AUTH_VIEW)
        task_to_project = {}
        task_to_name = {}
        for record in failRecords:
            task_to_project[
                record.task_id.id] = record.task_id.belong_project.project_name
            task_to_name[record.task_id.id] = record.task_id.task_name
        data = dataToJson([model_to_dict(i) for i in failRecords])
        return JsonResponse(
            get_ajax_msg(
                1, 1, '获取失败记录成功', {
                    'records': data,
                    'project_info': task_to_project,
                    'task_info': task_to_name
                }))
コード例 #19
0
def task_to_project(request):
    if request.method == "POST":
        tasks = filter_tasks_for_user(
            request.user,
            TaskInfo.objects.all().filter(is_run=True), AUTH_VIEW)
        sum_dic = {}
        project_to_name = {}
        for task in tasks:
            if task.belong_project.id not in sum_dic.keys():
                sum_dic[task.belong_project.id] = 1
                project_to_name[
                    task.belong_project.id] = task.belong_project.project_name
            else:
                sum_dic[task.belong_project.
                        id] = sum_dic[task.belong_project.id] + 1
        result = {}
        for item in sum_dic:
            result[project_to_name[item]] = sum_dic[item]
        data = dataToJson(result)
        return JsonResponse(
            get_ajax_msg(1, 1, '获取正在执行任务统计数据成功', {'tasks': data}))
コード例 #20
0
def env_list(request):
    if request.method == "GET":
        return render(request, 'api/environment_manage.html')
    elif request.method == "POST":
        index = int(request.POST.get('index'))
        objects = EnvInfo.objects.filter().order_by('-id')
        envs = pagination_for_objects(objects, index)

        project_id_to_name = {}
        count = objects.count()
        for env in envs:
            project_id_to_name[
                env.belong_project_id] = env.belong_project.project_name
        data = dataToJson([model_to_dict(i) for i in envs])
        return JsonResponse(
            get_ajax_msg(
                1, 1, '获取环境列表成功', {
                    'envs': data,
                    'count': count,
                    'currPage': index,
                    'id_to_name': project_id_to_name
                }))
コード例 #21
0
def summary_fail_task(request):
    if request.method == "POST":
        startDate = request.POST.get('startDate')
        endDate = request.POST.get('endDate')
        if startDate is None or endDate is None:
            # 统计最近半年的失败记录
            endDate = datetime.datetime.now()
            startDate = endDate - datetime.timedelta(days=180)
        else:
            # 统计已选时间区间的失败记录
            startDate = datetime.datetime.strptime(startDate, "%Y-%m-%d")
            endDate = datetime.datetime.strptime(
                endDate, "%Y-%m-%d") + datetime.timedelta(days=1)
        failRecords = filter_fail_records_for_user(
            request.user,
            TaskFailedRecord.objects.filter(time__range=(startDate, endDate)),
            AUTH_VIEW)
        sum_dic = {}
        task_to_project = {}
        for record in failRecords:
            if record.task_id.id not in sum_dic:
                sum_dic[record.task_id.id] = 1
                task_to_project[
                    record.task_id.
                    id] = record.task_id.belong_project.project_name
            else:
                sum_dic[record.task_id.id] = sum_dic[record.task_id.id] + 1
        result = {}
        for item in sum_dic:
            if task_to_project[item] not in result:
                result[task_to_project[item]] = sum_dic[item]
            else:
                result[task_to_project[item]] = sum_dic[item] + result[
                    task_to_project[item]]
        data = dataToJson(result)
        return JsonResponse(get_ajax_msg(1, 1, '获取失败统计数据成功',
                                         {'records': data}))
コード例 #22
0
def case_search(request):
    if request.method == 'POST':
        # 当要搜索某个模块下的用例时,可通过传入模块id进行获取
        module_id = request.POST.get('module_id')
        if module_id != None:
            cases = TestCaseInfo.objects.all().filter(
                belong_module_id=module_id)
            count = cases.count()
            data = dataToJson([model_to_dict(i) for i in cases])
            return JsonResponse(
                get_ajax_msg(1, 1, '搜索成功', {
                    'cases': data,
                    'count': count
                }))
        index = int(request.POST.get('index'))
        project_name = request.POST.get('project_name', '')
        module_name = request.POST.get('module_name', '')
        case_name = request.POST.get('case_name', '')
        author = request.POST.get('author', '')
        project_name_dic = {}
        module_name_dic = {}
        if len(project_name) == 0 and len(module_name) == 0 and len(
                case_name) == 0 and len(author) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '搜索条件无效'))
        else:
            cases = TestCaseInfo.objects.all()
            if len(module_name) != 0 and module_name != '模块名称':
                cases = cases.filter(
                    belong_module__module_name__contains=module_name)
            if len(project_name) != 0 and project_name != '项目名称':
                cases = cases.filter(
                    belong_module__belong_project__project_name__contains=
                    project_name)
            if len(case_name) != 0:
                cases = cases.filter(name__contains=case_name)
            if len(author) != 0:
                cases = cases.filter(author__contains=author)
        if cases is None:
            return JsonResponse(get_ajax_msg(0, 0, '查询出错'))
        if cases is not None and len(cases) > 0:
            cases = filter_cases_for_user(request.user, cases.order_by('-id'),
                                          AUTH_VIEW)  # 根据用户权限筛选用例
            for case in cases:
                # 所属模块id对应模块名称
                module_id = case.belong_module_id
                module_name = case.belong_module.module_name
                module_name_dic[str(module_id)] = module_name
                # 所属模块id对应项目名称
                project_name = case.belong_module.belong_project.project_name
                project_name_dic[str(module_id)] = project_name
        count = len(cases)
        cases = pagination_for_objects(cases, index)
        tempData = [model_to_dict(i) for i in cases]
        del_fields(tempData, [
            'variables', 'parameters', 'hooks', 'url', 'request_data',
            'headers', 'extract', 'validate', 'include'
        ])
        data = dataToJson(tempData)
        return JsonResponse(
            get_ajax_msg(
                1, 1, '搜索成功', {
                    'cases': data,
                    'count': count,
                    'currPage': index,
                    'proInfo': project_name_dic,
                    'moduleInfo': module_name_dic
                }))