Beispiel #1
0
def login_operation(request):
    # Post中的参数会对应到Form中进行验证
    login_form = LoginForm(request.POST)
    # is_valid返回验证结果
    if login_form.is_valid():
        username = request.POST.get('account')
        password = request.POST.get('password')

        # 登录成功返回User对象,登录失败返回None
        user = authenticate(username=username, password=password)

        if user is not None:
            # 使用Django验证系统登录,生成session,并且保存在数据库和浏览器
            login(request, user)
            # 设置session过期时间
            request.session.set_expiry(SECONDS_OF_ONE_HOUR * 24)
            # 清除所有已经失效的session
            request.session.clear_expired()
            result = get_ajax_msg(SUC_CODE, RESULT_SUC_TAG, "登录成功")
        else:
            result = get_ajax_msg(FAIL_CODE, RESULT_FAIL_TAG, "用户名或密码错误")
    else:
        # TODO 是否可以只从校验拿到错误信息
        pattern = '(?<=<li>)\S+(?=</li>)'
        items = list(login_form.errors.items())[0]
        content = str(items[1])
        msg = re.search(pattern, content).group()
        result = get_ajax_msg(INVALID_INPUT_CODE, RESULT_FAIL_TAG, msg)
    return result
Beispiel #2
0
def project_create(request):
    if request.method == 'GET':
        return render(request, 'api/project_new.html')
    elif request.method == 'POST':
        if request.user.has_perm(AUTH_ADD_PROJECT):
            params = json.loads(request.body.decode('utf-8'))
            model_form = ProjectModelForm(params)
            if model_form.is_valid():
                project_name = params['project_name']
                if not ProjectInfo.objects.filter(
                        project_name=project_name).exists():
                    # 没有相同名字的项目
                    model_form.save()
                    project = ProjectInfo.objects.filter(
                        project_name=project_name)
                    # DebugTalk(belong_project=project.first()).save()
                    # 读取默认文件内容,存入默认提供的方法
                    content = get_default_debugtalk()
                    DebugTalk.objects.create(belong_project=project.first(),
                                             debugtalk=content)
                    # 项目创建者默认拥有该项目的查询,修改权限
                    assign_perm(AUTH_VIEW, request.user, project)
                    assign_perm(AUTH_UPDATE, request.user, project)
                    return JsonResponse(get_ajax_msg(1, 1, '新增工程成功!'))
                else:
                    # 存在相同名字的项目
                    return JsonResponse(get_ajax_msg(0, 0, '已存在此项目!'))
            else:
                msg = get_validate_form_msg(model_form)
                return JsonResponse(get_ajax_msg(0, 0, msg))
        else:
            return JsonResponse(get_ajax_msg(0, 0, '用户没有创建项目的权限'))
Beispiel #3
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
            }))
Beispiel #4
0
def assign_auth(request):
    if request.user.is_superuser:
        if request.method == 'POST':
            user_id = request.POST.get('userId')
            if user_id != DEFAULT_USER_ID:
                try:
                    user = UserInfo.objects.get(id=user_id)
                except ObjectDoesNotExist:
                    return JsonResponse(get_ajax_msg(0, 0, '没有该名用户'))
                else:
                    projects = ProjectInfo.objects.filter().order_by('-id')
                    empty_user_auth(user, projects, add_perm_list)  # 清空用户权限
                    is_superuser = request.POST.get('is_superuser')
                    checks = request.POST.get('checks')
                    auths = request.POST.get('auths')
                    # 分配用户是否为管理员
                    user.is_superuser = is_superuser
                    user.save()
                    # 分配创建项目,模块,用例,任务权限
                    if checks:
                        for perm in checks.split(','):
                            assign_perm(perm, user)
                    # 分配项目的查询,修改,删除权限
                    if auths:
                        auths = request.POST.get('auths').split(',')
                        for auth in auths:
                            project_id = auth.split('-')[0]
                            auth_name = auth.split('-')[1]
                            project = ProjectInfo.objects.get(id=project_id)
                            assign_perm(auth_name, user, project)
                    return JsonResponse(get_ajax_msg(1, 1, '分配权限成功'))
            else:
                return JsonResponse(get_ajax_msg(0, 0, '请选择用户'))
    else:
        return JsonResponse(get_ajax_msg(0, 0, '该名用户没有管理员权限'))
Beispiel #5
0
def project_update(request):
    if request.method == 'POST':
        model_form = ProjectModelForm(request.POST)
        if model_form.is_valid():
            project_id = request.POST.get('id')
            project_name = request.POST.get('project_name')
            responsible_name = request.POST.get('responsible_name')
            test_user = request.POST.get('test_user')
            dev_user = request.POST.get('dev_user')
            publish_app = request.POST.get('publish_app')
            simple_desc = request.POST.get('simple_desc')
            other_desc = request.POST.get('other_desc')
            # 检查用户是否拥有修改权限
            if not request.user.has_perm(
                    AUTH_UPDATE, ProjectInfo.objects.get(id=project_id)):
                return JsonResponse(get_ajax_msg(0, 0, '用户没有修改该项目的权限'))
            if ProjectInfo.objects.update_project(
                    project_id,
                    project_name=project_name,
                    responsible_name=responsible_name,
                    test_user=test_user,
                    dev_user=dev_user,
                    publish_app=publish_app,
                    simple_desc=simple_desc,
                    other_desc=other_desc):
                return JsonResponse(get_ajax_msg(1, 1, '修改项目成功', {}))
            else:
                return JsonResponse(get_ajax_msg(0, 0, '修改项目失败', {}))
        else:
            msg = get_validate_form_msg(model_form)
            return JsonResponse(get_ajax_msg(0, 1, msg))
def module_update(request):
    if request.method == 'POST':
        model_form = ModuleModelForm(request.POST)
        if model_form.is_valid():
            module_id = request.POST.get('id')
            module_name = request.POST.get('module_name')
            project_name = request.POST.get('project_name')
            test_user = request.POST.get('test_user')
            simple_desc = request.POST.get('simple_desc')
            other_desc = request.POST.get('other_desc')
            if check_perm(request.user, ModuleInfo.objects.get(id=module_id),
                          AUTH_UPDATE):
                if ModuleInfo.objects.update_module(module_id,
                                                    module_name=module_name,
                                                    project_name=project_name,
                                                    test_user=test_user,
                                                    simple_desc=simple_desc,
                                                    other_desc=other_desc):
                    return JsonResponse(get_ajax_msg(1, 1, '修改模块成功', {}))
                else:
                    return JsonResponse(get_ajax_msg(0, 0, '修改模块失败', {}))
            else:
                return JsonResponse(get_ajax_msg(0, 0, '用户没有修改该模块的权限'))
        else:
            msg = get_validate_form_msg(model_form)
            return JsonResponse(get_ajax_msg(0, 0, msg))
def module_create(request):
    if request.method == 'GET':
        return render(request, 'api/module_new.html')
    elif request.method == 'POST':
        if request.user.has_perm(AUTH_ADD_MODULE):
            if request.method == 'POST':
                model_form = ModuleModelForm(request.POST)
                if model_form.is_valid():
                    project_id = request.POST.get('belong_project')
                    if not ProjectInfo.objects.filter(id=project_id).exists():
                        return JsonResponse(get_ajax_msg(0, 0, '此项目不存在', {}))
                    else:
                        if ModuleInfo.objects.filter(
                                module_name=model_form.instance.module_name
                        ).filter(belong_project_id=project_id).exists():
                            return JsonResponse(
                                get_ajax_msg(0, 0, '此模块已存在', {}))
                        model_form.instance.belong_project_id = project_id
                        model_form.save()
                        return JsonResponse(get_ajax_msg(1, 1, '添加模块成功', {}))
                else:
                    msg = get_validate_form_msg(model_form)
                    return JsonResponse(get_ajax_msg(0, 0, msg))
        else:
            return JsonResponse(get_ajax_msg(0, 0, '用户没有创建模块的权限'))
Beispiel #8
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
                }))
Beispiel #9
0
def task_run(request):
    global is_timer_start
    global run_task_list
    global run_job_dict
    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, '没有这条数据', {}))
        task = tasks[0]

        if not task.is_run:
            if task.start_time > datetime.datetime.now():  # 任务开始时间必须大于当前时间
                pass
            else:
                task.start_time = datetime.datetime.now() + datetime.timedelta(
                    seconds=10)
            # if not is_timer_start:
            #     is_timer_start = True
            #     start_task_timer = StartTaskTimer(run_task_list, run_job_dict)
            #     start_task_timer.start()
            run_task_list.append(task)
            task.is_run = True
            task.save()
            connection.close()
            return JsonResponse(get_ajax_msg(1, 1, '该任务成功运行'))
        else:
            connection.close()
            return JsonResponse(get_ajax_msg(0, 0, '该任务正在运行'))
Beispiel #10
0
def task_stop(request):
    global run_task_list
    global run_job_dict
    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, '没有这条数据', {}))
        task = tasks[0]

        if task.is_run:
            task.is_run = False
            task.fail_times = 0
            task.save()
            # if task in run_task_list:
            #     run_task_list.remove(task)  # 从运行任务列表中删除该任务
            try:
                # jobs = run_job_dict[task.id]
                # for job in jobs:
                schedule.cancel_job(task.id)
            except KeyError:
                print('非循环任务')
            return JsonResponse(get_ajax_msg(1, 1, '该任务成功停止'))
        else:
            return JsonResponse(get_ajax_msg(0, 0, '该任务没有运行'))
Beispiel #11
0
def logout_operation(request):
    logout(request)
    if not request.user.is_authenticated:
        result = get_ajax_msg(SUC_CODE, RESULT_SUC_TAG, "注销成功")
    else:
        result = get_ajax_msg(FAIL_CODE, RESULT_FAIL_TAG, "注销失败")
    return result
Beispiel #12
0
def task_create(request):
    if request.method == 'GET':
        return render(request, 'api/task_new.html')
    elif request.user.has_perm(AUTH_ADD_TASK):
        if request.method == 'POST':
            model_form = TaskModelForm(request.POST)
            if model_form.is_valid():
                task_name = request.POST.get('task_name')
                env_id = request.POST.get('belong_env')
                project_id = request.POST.get('belong_project')
                module_id = request.POST.get('belong_module')
                emails = request.POST.get('receiver_email')
                start_time = datetime.datetime.fromtimestamp(
                    int(request.POST.get('start_time')) / 1000)
                if request.POST.get('is_loop') == 'true':
                    is_loop = True
                elif request.POST.get('is_loop') == 'false':
                    is_loop = False
                interval_minute = request.POST.get('interval_minute')

                error_msg = None
                if not EnvInfo.objects.filter(id=env_id).exists():
                    error_msg = '此环境不存在'
                elif not ProjectInfo.objects.filter(id=project_id).exists():
                    error_msg = '此项目不存在'
                elif not ModuleInfo.objects.filter(id=module_id).exists():
                    error_msg = '此模块不存在'
                elif TaskInfo.objects.filter(
                        task_name=task_name,
                        belong_module_id=module_id).exists():
                    error_msg = '已存在此任务'
                elif start_time <= datetime.datetime.now():
                    error_msg = '任务开始时间早于当前时间'
                elif is_loop and int(interval_minute) < 1:
                    error_msg = '任务开始循环间隔时间不能小于1分钟'
                elif not validate_emails(emails.split(';')):
                    error_msg = '邮箱格式错误'
                if error_msg is not None:
                    return JsonResponse(get_ajax_msg(0, 0, error_msg, {}))

                model_form.instance.belong_env_id = env_id
                model_form.instance.belong_project_id = project_id
                model_form.instance.belong_module_id = module_id
                model_form.instance.start_time = start_time
                model_form.instance.receiver_email = deal_emails(
                    emails.split(';'))
                model_form.save()

                for case_id in request.POST.get('case_list').split(','):
                    task = TaskInfo.objects.get(
                        task_name=request.POST.get('task_name'))
                    case = TestCaseInfo.objects.get(id=case_id)
                    task.cases.add(case)

                return JsonResponse(get_ajax_msg(1, 1, '添加任务成功', {}))
            else:
                msg = get_validate_form_msg(model_form)
                return JsonResponse(get_ajax_msg(0, 0, msg))
    else:
        return JsonResponse(get_ajax_msg(0, 0, '用户没有创建任务的权限'))
Beispiel #13
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}))
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}))
Beispiel #15
0
def auth(request):
    if request.user.is_superuser:
        if request.method == 'GET':
            return render(request, 'api/auth.html')
        elif request.method == 'POST':
            # 初始化权限树
            user_id = request.POST.get('userId')
            projects = ProjectInfo.objects.filter().order_by('-id')
            perm_dict = {
                AUTH_VIEW: '查询',
                AUTH_UPDATE: '修改',
                AUTH_DELETE: '删除'
            }  # 需要初始化的权限
            is_superuser = False
            has_add_perm_list = []  # 用户拥有的创建权限列表
            auth_list = []
            if user_id != DEFAULT_USER_ID:
                try:
                    user = UserInfo.objects.get(id=user_id)
                    checker = ObjectPermissionChecker(user)
                    is_superuser = user.is_superuser
                    has_add_perm_list = check_add_perm_for_user(
                        user, add_perm_list)  # 初始化创建权限部分
                except ObjectDoesNotExist:
                    return JsonResponse(get_ajax_msg(0, 0, '没有该名用户'))
            # 初始化项目权限部分
            for project in projects:
                flag_all = True  # 全选项目权限标志
                auth_dict = {}
                auth_dict['name'] = project.project_name
                auth_dict['value'] = project.id
                auth_dict['list'] = []
                for key, value in perm_dict.items():
                    perm_name = value
                    perm_value = str(project.id) + '-' + key
                    if user_id != DEFAULT_USER_ID:
                        is_auth = checker.has_perm(key, project)
                    else:
                        is_auth = False
                    flag_all = flag_all and is_auth  # 与运算,判断是否全选权限
                    auth_dict['list'].append({
                        'name': perm_name,
                        'value': perm_value,
                        'checked': is_auth
                    })
                auth_dict['checked'] = flag_all
                auth_list.append(auth_dict)
            return JsonResponse(
                get_ajax_msg(
                    1, 1, '获取权限列表成功', {
                        'is_superuser': is_superuser,
                        'checks': ','.join(has_add_perm_list),
                        'trees': auth_list
                    }))
    else:
        return JsonResponse(get_ajax_msg(0, 0, '该名用户没有管理员权限'))
Beispiel #16
0
def case_upload(request):
    if request.method == 'POST':
        upload_file = request.FILES.get('file', None)
        if not upload_file:
            return JsonResponse(get_ajax_msg(0, 0, '上传失败!', {}))
        result = parse_upload_case(upload_file)
        if result:
            return JsonResponse(get_ajax_msg(1, 1, '上传成功!', {'case': result}))
        else:
            return JsonResponse(get_ajax_msg(0, 0, '解析文件失败!', {}))
Beispiel #17
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}))
Beispiel #18
0
def task_delete(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, '没有这条数据', {}))
        if check_perm(request.user, tasks[0], AUTH_DELETE):
            tasks[0].delete()
            return JsonResponse(get_ajax_msg(1, 1, '删除成功', {}))
        else:
            return JsonResponse(get_ajax_msg(0, 0, '用户没有删除该任务的权限'))
Beispiel #19
0
def env_delete(request):
    if request.method == "POST":
        env_info = json.loads(request.body.decode('utf-8'))
        env_id = env_info['id']
        env = EnvInfo.objects.filter(id=env_id)
        if len(env) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '没有这条数据', {}))
        if EnvInfo.objects.delete_env(env_id):
            return JsonResponse(get_ajax_msg(1, 1, '删除成功', {}))
        else:
            return JsonResponse(get_ajax_msg(0, 0, '删除失败', {}))
Beispiel #20
0
def captcha_operation(request):
    receiver = request.POST.get('receiver')
    send_type = request.POST.get('send_type')
    if receiver != '' and send_type != '':
        result_code = send_captcha(receiver, send_type)
        if result_code == 1:
            result = get_ajax_msg(SUC_CODE, RESULT_SUC_TAG, "发送成功")
        else:
            result = get_ajax_msg(FAIL_CODE, RESULT_FAIL_TAG, "发送失败")
    else:
        result = get_ajax_msg(INVALID_INPUT_CODE, RESULT_FAIL_TAG, "邮箱不能为空")
    return result
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
                }))
Beispiel #22
0
def case_delete(request):
    if request.method == "POST":
        case_id = request.POST.get('id')
        cases = TestCaseInfo.objects.filter(id=case_id)
        if len(cases) == 0:
            return JsonResponse(get_ajax_msg(0, 0, '没有这条数据', {}))
        # 检查用户是否拥有删除权限
        if check_perm(request.user, cases[0], AUTH_DELETE):
            cases[0].delete()
            return JsonResponse(get_ajax_msg(1, 1, '删除成功'))
        else:
            return JsonResponse(get_ajax_msg(0, 0, '用户没有删除该模块的权限'))
Beispiel #23
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}))
Beispiel #24
0
def project_delete(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, '没有这条数据', {}))
        # 检查用户是否拥有删除权限
        if not request.user.has_perm(AUTH_DELETE, projects[0]):
            return JsonResponse(get_ajax_msg(0, 0, '用户没有删除该项目的权限'))
        if ProjectInfo.objects.delete_project(project_id):
            return JsonResponse(get_ajax_msg(1, 1, '删除成功', {}))
        else:
            return JsonResponse(get_ajax_msg(0, 0, '删除失败', {}))
Beispiel #25
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
                }))
def module_delete(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, '没有这条数据', {}))
        # 检查用户是否拥有删除权限
        if check_perm(request.user, modules[0], AUTH_DELETE):
            if ModuleInfo.objects.delete_module(module_id):
                return JsonResponse(get_ajax_msg(1, 1, '删除成功'))
            else:
                return JsonResponse(get_ajax_msg(0, 0, '删除失败'))
        else:
            return JsonResponse(get_ajax_msg(0, 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
                }))
Beispiel #28
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
                }))
Beispiel #29
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
Beispiel #30
0
def case_run(request):
    if request.method == 'POST':
        user_name = request.user.username
        case_info = json.loads(request.body.decode('utf-8')).pop('case_info')
        case_id = case_info.get('case_id')
        base_url = case_info.get('base_url', None)
        result = case_utils.run_case_by_id(base_url, case_id, None, user_name)

        if result == case_utils.RUN_CASE_ERR:
            return JsonResponse(get_ajax_msg(0, 0, '用例错误', {}))
        elif result == case_utils.RUN_CASE_EXCEPTION:
            return JsonResponse(get_ajax_msg(0, 0, '用例解析异常', {}))
        else:
            return JsonResponse(
                get_ajax_msg(1, 1, '已添加到队列', {'report_id': result}))
    else:
        return JsonResponse(get_ajax_msg(1001, 0, '不支持的请求方式', {}))