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 }))
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 }))
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 }))
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 }))
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 }))
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}))
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}))
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}))
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 }))
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}))
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 }))
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 }))
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
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 }))
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
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}))
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}))
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 }))
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}))
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 }))
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}))
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 }))