def module_edit_b(request): try: rep = json.loads(request.body) m2_id = rep['id'] m2_name = rep['m2'] except Exception as e: print(e) return JsonResponse({"status":40001,"msg":"缺少必填参数"}) else: if len(m2_name) > 20: return JsonResponse({"status":20004,"msg":"名称长度的合理范围为2到20位"}) try: m2_obj = ModuleB.objects.get(id=m2_id) except Exception as e: return JsonResponse({"status":40001,"msg":"该条记录不存在"}) n = ModuleB.objects.filter(Q(id=m2_id) & Q(m2=m2_name)).count() if n > 0: return JsonResponse({"status":20004,"msg":"此名称已存在,请勿重复添加"}) try: # 保存module m2_obj.m2=m2_name m2_obj.isChange = 1 m2_obj.changer_id = get_user_object(request) m2_obj.change_time = curremt_time m2_obj.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"修改失败"}) else: return JsonResponse({"status":20000,"msg":"修改成功"})
def add_notes(request): try: req = json.loads(request.body) bug_id = req["bug_id"] remark = req["remark"] except Exception as e: return JsonResponse({"status":40001,"msg":"缺陷ID和备注不能为空"}) else: if len(remark) == 0 or len(remark) > 2000: return JsonResponse({"status":40001,"msg":"备注的有效长度为1-2000"}) try: bug_object = Bug.objects.get(bug_id=bug_id) except Exception as e: return JsonResponse({"status":40004,"msg":"bug_id无效"}) try: msg = "添加了备注。" notes = BugHistory( bug_id = bug_object, remark = remark, desc = msg, user_id = get_user_object(request) ) notes.save() except Exception as e: return JsonResponse({"status":20004,"msg":"提交失败"}) else: return JsonResponse({"status":20000,"msg":"提交成功"})
def module_add_b(request): try: rep = json.loads(request.body) module_a_id = rep['module_a_id'] module_b_name = rep['module_b_name'] except Exception as e: print(e) return JsonResponse({"status":40001,"msg":"module是必填项哦"}) else: if len(module_b_name) > 20: return JsonResponse({"status":20004,"msg":"名称长度的合理范围为2到20位"}) n = ModuleB.objects.filter(Q(m1_id=module_a_id) & Q(m2=module_b_name)).count() if n > 0: return JsonResponse({"status":20004,"msg":"此名称已存在,请勿重复添加"}) try: # 保存module m = ModuleB( m1_id=ModuleA.objects.get(id=module_a_id), m2=module_b_name, creator_id=get_user_object(request) ) m.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"保存失败"}) else: return JsonResponse({"status":20000,"msg":"保存成功"})
def del_testcase(request): try: rep = request.GET testcase_id = rep["case_id"] except Exception as e: return JsonResponse({"status": 40004, "msg": "缺陷ID不能为空"}) is_check_testcase = TestCase.objects.filter( case_id=testcase_id).values_list("isDelete") if len(is_check_testcase) == 0: return JsonResponse({"status": 20004, "msg": "该条记录不存在"}) try: if is_check_testcase[0][0] == 1: return JsonResponse({"status": 20001, "msg": "该条记录已被他人删除"}) except Exception as e: return JsonResponse({"status": 40004, "msg": "异常错误,请联系管理员"}) try: tc = TestCase.objects.get(case_id=testcase_id) tc.deleter_id = get_user_object(request) tc.delete_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") tc.isDelete = 1 tc.save() except Exception as e: return JsonResponse({"status": 20004, "msg": "删除失败"}) else: return JsonResponse({"status": 20000, "msg": "删除成功"})
def module_add_a(request): try: rep = json.loads(request.body) product_code = rep['product_code'] module_name = rep['ModuleA'] except Exception as e: print(e) return JsonResponse({"status":40001,"msg":"module是必填项哦"}) else: if len(module_name) > 20: return JsonResponse({"status":20004,"msg":"名称长度的合理范围为2到20位"}) n = ModuleA.objects.filter(Q(m1=module_name) & Q(product_code=product_code)).count() if n > 0: return JsonResponse({"status":20004,"msg":"名称已存在,请勿重复添加"}) try: # 保存module pcode = Product.objects.get(product_code=product_code) m = ModuleA( product_code=pcode, m1=module_name, creator_id=get_user_object(request) ) m.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"保存失败"}) else: return JsonResponse({"status":20000,"msg":"保存成功"})
def edit(request): try: req = json.loads(request.body) testcase_id = req["case_id"] case_obj = TestCase.objects.get(case_id=testcase_id) except Exception as e: return JsonResponse({"status": 20004, "msg": "用例ID不能为空,并且需有效"}) if "DataInput" in req: case_obj.DataInput = req["DataInput"] if "precondition" in req: case_obj.precondition = req["precondition"] if "remark" in req: case_obj.remark = req["remark"] if "priority" in req: case_obj.priority = req["priority"] if "steps" in req: case_obj.steps = req["steps"] if "title" in req: case_obj.title = req["title"] if "expected_result" in req: case_obj.expected_result = req["expected_result"] if "category" in req: case_obj.category = req["category"] if "module_id" in req: if len(req["module_id"]) == 1: try: m1_id = ModuleA.objects.get(id=req["module_id"][0]) except Exception as e: return JsonResponse({"status": 40004, "msg": u"产品模块无效."}) else: case_obj.m1_id = m1_id if len(req["module_id"]) == 2: try: m2_id = ModuleB.objects.get(id=req["module_id"][1]) except Exception as e: return JsonResponse({"status": 40004, "msg": u"产品模块无效."}) else: case_obj.m2_id = m2_id try: change_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") case_obj.change_time = change_time case_obj.changer_id = get_user_object(request) case_obj.save() except Exception as e: return JsonResponse({"status": 20004, "msg": "修改失败"}) else: # 保存附件 try: if "annex" in req: annex = req["annex"] for f in annex: aex = TestCaseFiles(case_id=case_obj, file_path=f) aex.save() except Exception as e: return JsonResponse({"status": 20004, "msg": "附件错误"}) else: return JsonResponse({"status": 20000, "msg": "修改成功"})
def create_product(request): rep = json.loads(request.body) try: product_code = rep['product_code'] product_name = rep['product_name'] except Exception as e: return JsonResponse({"status":40001,"msg":"产品名称和编号是必填项哦"}) if len(product_code) > 20 | len(product_code) < 2: return JsonResponse({"status":20004,"msg":"名称长度的合理范围为1到20位"}) if len(product_name) > 20 | len(product_name) < 2: return JsonResponse({"status":20004,"msg":"编号长度的合理范围为1到20位"}) is_check = Product.objects.filter(Q(product_code=product_code) | Q(product_name=product_name)).count() if is_check > 0: return JsonResponse({"status":"20004","msg":"此项目名称已存在哦"}) try: p = Product( product_code = product_code, product_name = product_name, principal = get_user_object(request), creator_id = get_user_object(request) ) p.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"保存失败"}) else: try: pcode_object = Product.objects.get(product_code=product_code) member = ProductMembers( member_id = get_user_object(request), product_code = pcode_object, status = 0 ) member.save() except Exception as e: print(e) pass return JsonResponse({"status":20000,"msg":"产品增加成功!快去增加产品版本、成员信息吧"})
def resolve(request): try: req = json.loads(request.body) bug_id = req["bug_id"] solution = req["solution"] assignedTo = req["assignedTo"] except Exception as e: return JsonResponse({"status":40001,"msg":"缺少必要的参数"}) try: assignedTo_obj = User.objects.get(user_id=assignedTo) except Exception as e: return JsonResponse({"status":40004,"msg":"指派人不存在"}) if "remark" in req: remark = req["remark"] if len(remark) > 1000: return JsonResponse({"status":40004,"msg":"备注的有效长度为1000"}) else: remark = "" try: bug_object = Bug.objects.get(bug_id=bug_id) except Exception as e: return JsonResponse({"status":40004,"msg":"bug_id无效"}) try: is_solution = BugSolution.objects.get(key=solution) except Exception as e: return JsonResponse({"status":40004,"msg":"solution无效"}) try: user_obj = get_user_object(request) bug_object.solution = is_solution bug_object.assignedTo_id = assignedTo_obj bug_object.fixed_id = user_obj bug_object.fixed_time = curremt_time bug_object.status = BugStatus.objects.get(key="Fixed") bug_object.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"提交失败"}) else: Solution_content = BugSolution.objects.filter(key=solution).values_list("name",flat=True)[0] msg = "解决了缺陷。解决方案为:{0}".format(Solution_content) log = BugHistory( user_id = user_obj, bug_id = bug_object, desc = msg, remark = remark ) log.save() return JsonResponse({"status":20000,"msg":"提交成功"})
def hangup(request): try: req = json.loads(request.body) bug_id = req["bug_id"] except Exception as e: return JsonResponse({"status":40001,"msg":"缺陷ID不能为空"}) try: bug_object = Bug.objects.get(bug_id=bug_id) except Exception as e: return JsonResponse({"status":40004,"msg":"bug_id无效"}) try: bug_object.status = BugStatus.objects.get(key="Hang-up") bug_object.hangUp_id = get_user_object(request) bug_object.hangUp_time = curremt_time bug_object.save() except Exception as e: return JsonResponse({"status":20004,"msg":"延期操作失败"}) else: bug_log_record(request,get_user_object(request),bug_object,"Hang-up") return JsonResponse({"status":20000,"msg":"延期操作成功"})
def close(request): try: req = json.loads(request.body) bug_id = req["bug_id"] except Exception as e: return JsonResponse({"status":40001,"msg":"缺少必要的请求参数"}) try: bug_object = Bug.objects.get(bug_id=bug_id) except Exception as e: return JsonResponse({"status":40004,"msg":"bug_id无效"}) try: bug_object.status = BugStatus.objects.get(key="Closed") bug_object.closed_id = get_user_object(request) bug_object.closed_time = curremt_time bug_object.save() except Exception as e: return JsonResponse({"status":20004,"msg":"缺陷关闭失败"}) else: bug_log_record(request,get_user_object(request),bug_object,"close") return JsonResponse({"status":20000,"msg":"缺陷关闭成功"})
def testsutie_cell_add(request): try: req = json.loads(request.body) suite_id = req["suite_id"] except Exception as e: return JsonResponse({"status": 40001, "msg": "suite_id不能为空"}) if "case_data" in req and "m1" not in req: case_data = req["case_data"] if "case_data" in req and "m1" in req: return JsonResponse({"status": 40001, "msg": "请检查请求数据"}) if "m1" in req: m1 = req["m1"] if "m2" in req: m2 = req["m2"] case_data = TestCase.objects.filter( Q(m2_id=m2)).values_list("case_id")[:] else: case_data = TestCase.objects.filter( Q(m1_id=m1)).values_list("case_id")[:] if len(case_data) == 0: return JsonResponse({"status": 20004, "msg": "该模块下没有测试用例数据"}) case_data = [i[0] for i in case_data] try: creator_obj = get_user_object(request) suite_obj = TestSuite.objects.get(suite_id=suite_id) try: data = [ TestSuiteCell(case_id=TestCase.objects.get(case_id=i), suite_id=suite_obj, creator_id=creator_obj) for i in case_data ] print(data) except Exception as e: print(e) return JsonResponse({"status": 20004, "msg": "用例ID无效"}) else: print(data) TestSuiteCell.objects.bulk_create(data) except Exception as e: print(e) return JsonResponse({"status": 20004, "msg": "保存失败,请联系管理员"}) else: return JsonResponse({"status": 20000, "msg": "保存成功"})
def assign(request): try: req = json.loads(request.body) bug_id = req["bug_id"] assignedTo = req["assignedTo"] except Exception as e: return JsonResponse({"status":40001,"msg":"缺少必要的参数"}) try: assignedTo_obj = User.objects.get(user_id=assignedTo) except Exception as e: return JsonResponse({"status":40004,"msg":"分配的用户不存在"}) try: bug_obj = Bug.objects.get(bug_id=bug_id) except Exception as e: return JsonResponse({"status":40004,"msg":"bug_id无效"}) if "remark" in req: remark = req["remark"] if len(remark) > 1000: return JsonResponse({"status":40004,"msg":"备注的有效长度为1000"}) else: remark = "" try: bug_obj.assignedTo_id = assignedTo_obj bug_obj.assignedTo_time = curremt_time bug_obj.status = BugStatus.objects.get(key="Open") bug_obj.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"分配失败"}) else: assignedTo_user = User.objects.filter(user_id=assignedTo).values_list("realname",flat=True) msg = "指派给:{0}".format(assignedTo_user[0]) log = BugHistory( user_id = get_user_object(request), bug_id = bug_obj, desc = msg, remark = remark ) log.save() return JsonResponse({"status":20000,"msg":"分配成功"})
def reopen(request): try: req = json.loads(request.body) bug_id = req["bug_id"] assignedTo = req["assignedTo"] except Exception as e: return JsonResponse({"status":40001,"msg":"缺少必要的请求参数"}) remark = "" if "remark" in req: remark = req["remark"] if len(remark) > 1000: return JsonResponse({"status":40004,"msg":"备注的有效长度为1000"}) try: bug_object = Bug.objects.get(bug_id=bug_id) except Exception as e: return JsonResponse({"status":40004,"msg":"bug_id无效"}) try: assignedTo_obj = User.objects.get(user_id=assignedTo) except Exception as e: return JsonResponse({"status":40004,"msg":"分配的用户不存在"}) try: bug_object.status = BugStatus.objects.get(key="Reopen") bug_object.assignedTo_id = assignedTo_obj bug_object.assignedTo_time = curremt_time bug_object.solution = None bug_object.save() except Exception as e: return JsonResponse({"status":20004,"msg":"重新打开失败"}) else: assignedTo_user = User.objects.filter(user_id=assignedTo).values_list("realname",flat=True)[0] msg = "重新打开缺陷。并分配给:{0}".format(assignedTo_user) log = BugHistory( user_id = get_user_object(request), bug_id = bug_object, desc = msg, remark = remark ) log.save() return JsonResponse({"status":20000,"msg":"缺陷重新打开成功"})
def fall(request): try: case_id = request.GET["case_id"] except Exception as e: return JsonResponse({"status": 40004, "msg": "case_id不能为空"}) try: case_id = TestCase.objects.get(case_id=case_id) except Exception as e: return JsonResponse({"status": 40004, "msg": "case_id无效"}) try: case_id.status = 1 case_id.faller_id = get_user_object(request) case_id.fall_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") case_id.save() except Exception as e: return JsonResponse({"status": 20004, "msg": "操作失败"}) else: return JsonResponse({"status": 20000, "msg": "操作成功"})
def create(request): try: req = json.loads(request.body) product_code = req["product_code"] suite_name = req["suite_name"] p_obj = Product.objects.get(product_code=product_code) except Exception as e: return JsonResponse({"status": 40001, "msg": "缺少必要的请求参数"}) if len(suite_name) > 30: return JsonResponse({"status": 20004, "msg": "名称的有效长度需小于30"}) try: suite_obj = TestSuite(suite_name=suite_name, product_code=p_obj, creator_id=get_user_object(request)) suite_obj.save() except Exception as e: print(e) return JsonResponse({"status": 20004, "msg": "保存失败,请联系管理员"}) else: return JsonResponse({"status": 20000, "msg": "创建成功"})
def review(request): try: req = json.loads(request.body) case_id = req["case_id"] result = req["result"] except Exception as e: return JsonResponse({"status": 40001, "msg": "Result和case_id不能为空"}) if result in [1, 2]: pass else: return JsonResponse({"status": 40001, "msg": "Result无效"}) if "remark" in req: remark = req["remark"] else: remark = "" try: case_obj = TestCase.objects.get(case_id=case_id) except Exception as e: return JsonResponse({"status": 40001, "msg": "case_id无效"}) try: case_obj.isReview = result case_obj.save() review_result = TestCaseReview(user_id=get_user_object(request), case_id=case_obj, result=result, remark=remark) review_result.save() except Exception as e: print(e) return JsonResponse({"status": 20004, "msg": "操作失败"}) else: return JsonResponse({"status": 20000, "msg": "操作成功"})
def testsutie_cell_run(request): try: req = json.loads(request.body) cell_id = req["cell_id"] result = req["result"] except Exception as e: return JsonResponse({"status": 40001, "msg": "cell_id和result不能为空"}) if result == 1 or result == -1: pass else: JsonResponse({"status": 40001, "msg": "result无效"}) try: cell_obj = TestSuiteCell.objects.get(cell_id=cell_id) cell_obj.result = result cell_obj.runner_id = get_user_object(request) cell_obj.run_time = curremt_time cell_obj.save() except Exception as e: return JsonResponse({"status": 20004, "msg": "服务器开小差了"}) else: return JsonResponse({"status": 20000, "msg": "用例运行结果保存成功"})
def module_del_b(request): try: m2_id = request.GET['id'] except Exception as e: print(e) return JsonResponse({"status":40001,"msg":"缺少必填参数"}) try: m2_obj = ModuleB.objects.get(id=m2_id) except Exception as e: return JsonResponse({"status":40001,"msg":"该条记录不存在"}) try: # 保存module m2_obj.isDelete = 1 m2_obj.deleter_id = get_user_object(request) m2_obj.delete_time = curremt_time m2_obj.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"删除失败"}) else: return JsonResponse({"status":20000,"msg":"删除成功"})
def create_release(request): rep = json.loads(request.body) try: product_code = rep['product_code'] release = rep['release'] except Exception as e: return JsonResponse({"status": 20004, "msg": "产品名称和版本号是必填项哦"}) # 检查产品是否存在 try: pcode = Product.objects.get(product_code=product_code) except Exception as e: return JsonResponse({"status": 20004, "msg": "未找到此产品名称"}) # 检测版本号是否存在 try: v = Release.objects.filter( Q(product_code=product_code) & Q(version=release)).count() if v > 0: return JsonResponse({"status": 20004, "msg": "该版本号已存在"}) except Exception as e: return JsonResponse({"status": 20004, "msg": "未找到此产品名称"}) if len(release) > 20 | len(release) < 2: return JsonResponse({"status": 20004, "msg": "名称长度的合理范围为2到20位"}) try: p = Release(product_code=pcode, version=release, creator_id=get_user_object(request)) p.save() except Exception as e: return JsonResponse({"status": 20004, "msg": "保存失败"}) else: return JsonResponse({"status": 20000, "msg": "保存成功"})
def edit(request): try: req = json.loads(request.body) bug_id = req["bug_id"] bug_obj = Bug.objects.get(bug_id=bug_id) except Exception as e: return JsonResponse({"status":40001,"msg":"缺少bug_id或bug_id无效"}) if "assignedTo_id" in req: try: bug_obj.assignedTo_id = User.objects.get(user_id=req["assignedTo_id"]) bug_obj.assignedTo_time = curremt_time except Exception as e: print(e) return JsonResponse({"status":40001,"msg":"指派人不存在"}) else: status = Bug.objects.filter(bug_id=bug_id).values_list("status")[0] if status == 'New': bug_obj.status = BugStatus.objects.get(key="Open") # check product_code if "product_code" in req: try: bug_obj.product_code = Product.objects.get(product_code=req["product_code"]) except Exception as e: print(e) return JsonResponse({"status":40004,"msg":"产品名称无效"}) if "module_id" in req and req["module_id"]: try: m1_id = ModuleA.objects.get(id=req["module_id"][0]) bug_obj.m1_id = m1_id except Exception as e: return JsonResponse({"status": 40004, "msg": u"产品模块无效."}) if len(req["module_id"]) == 2: try: m2_id = req["module_id"][1] bug_obj.m2_id = ModuleB.objects.get(id=m2_id) except Exception as e: return JsonResponse({"status": 40004, "msg": u"产品模块无效."}) # check version_object if "release" in req: if "product_code" not in req: return JsonResponse({"status":40001,"msg":"当您修改版本信息时,必须提交产品选项"}) try: bug_obj.version_id = Release.objects.get(Q(product_code=req["product_code"]) & Q(version=req["release"])) except Exception as e: print(e) return JsonResponse({"status":40004,"msg":"版本号无效"}) # check priority if "priority" in req: try: bug_obj.priority = BugPriority.objects.get(key=req["priority"]) except Exception as e: return JsonResponse({"status":40004,"msg":"优先级值无效"}) # check severity if "severity" in req: try: bug_obj.severity = BugSeverity.objects.get(key=req["severity"]) except Exception as e: print(e) return JsonResponse({"status":40004,"msg":"严重程度值无效"}) # check BugType if "bug_type" in req: try: bug_obj.bug_type = BugType.objects.get(key=req["bug_type"]) except Exception as e: print(e) return JsonResponse({"status":40004,"msg":"缺陷类型无效"}) if "title" in req: bug_obj.title = req["title"] if "steps" in req: bug_obj.steps = req["steps"] if "reality_result" in req: bug_obj.reality_result = req["reality_result"] if "expected_result" in req: bug_obj.expected_result = req["expected_result"] if "remark" in req: bug_obj.remark = req["remark"] try: bug_obj.save() except Exception as e: return JsonResponse({"status":20004,"msg":"缺陷修改失败"}) else: # 记录日志 try: bug_log_record(request,get_user_object(request),bug_obj,"edit") except Exception as e: print(e) pass # 保存附件 try: if "annex" in req: annex = req["annex"] for f in annex: aex = BugAnnex( bug_id = bug_obj, url = f ) aex.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"bug附件错误"}) else: return JsonResponse({"status":20000,"msg":"修改成功"})
def add(request): req = json.loads(request.body) try: product_code = req["product_code"] category = req["category"] title = req["title"] ExpectedResult = req["ExpectedResult"] steps = req["steps"] except Exception as e: print(e) return JsonResponse({"status": 20004, "msg": "产品信息、不能为空哦"}) if "module_id" in req and len(req["module_id"]): try: m1_id = ModuleA.objects.get(id=req["module_id"][0]) m2_id = ModuleB.objects.get(id=req["module_id"][1]) except Exception as e: return JsonResponse({"status": 40004, "msg": u"产品模块无效."}) else: m1_id = None m2_id = None DataInput = "" precondition = "" remark = "" priority = "" if "DataInput" in req: DataInput = req["DataInput"] if "precondition" in req: precondition = req["precondition"] if "remark" in req: remark = req["remark"] if "priority" in req: priority = req["priority"] if len(title) > 50: return JsonResponse({"status": 20004, "msg": "标题字数应小于50."}) if len(DataInput) > 500: return JsonResponse({"status": 20004, "msg": "输入字数应小于500."}) if len(ExpectedResult) > 500: return JsonResponse({"status": 20004, "msg": "预期结果字数应小于500."}) if len(steps) > 5000: return JsonResponse({"status": 20004, "msg": "操作步骤字数应小于5000."}) if len(remark) > 1000: return JsonResponse({"status": 20004, "msg": "备注字数应小于1000."}) if len(precondition) > 200 or len(DataInput) > 200 or len(remark) > 1000: return JsonResponse({ "status": 20004, "msg": "超出字数限制。请检查前置条件、测试输入、备注项." }) try: data = TestCase( product_code=Product.objects.get(product_code=product_code), title=title, category=category, DataInput=DataInput, steps=steps, expected_result=ExpectedResult, precondition=precondition, remark=remark, creator_id=get_user_object(request), priority=priority, m1_id=m1_id, m2_id=m2_id) data.save() except Exception as e: print(e) return JsonResponse({"status": 20004, "msg": "用例保存失败"}) else: case_id = TestCase.objects.get(case_id=data.case_id) # 保存附件 try: if "annex" in req: if req["annex"]: for f in req["annex"]: file = TestCaseFiles(case_id=case_id, file_path=f) file.save() except Exception as e: TestCase.objects.get(case_id=case_id).delete() return JsonResponse({"status": 20004, "msg": "附件错误"}) else: return JsonResponse({"status": 20000, "msg": "用例保存成功"})
def process_view(self, request, view, args, kwargs): """ 1. check user identify 2. check interface permission 3. check product permission """ # get token if request.path == "/api/user/login": return None else: token = "" cookie = "" if request.META.get("HTTP_AUTHORIZATION"): token = request.META["HTTP_AUTHORIZATION"].split(" ")[1] if request.META.get("HTTP_AUTHENTICATION"): token = request.META["HTTP_AUTHENTICATION"].split(" ")[1] if request.META.get("HTTP_COOKIE"): cookie = request.META["HTTP_COOKIE"].split("=")[1] token = cookie if token: pass else: return JsonResponse({ "status": 14402, "msg": "token或cookie身份令牌无效,请求中止" }) # check user token try: user_data = Authentication.objects.\ filter(token=token).\ annotate(Group=F("uid__group__group"),realname=F("uid__realname"),user_status=F("uid__user_status")).\ values("token","uid","Group","realname","user_status")[:][0] except Exception as e: print(e) return JsonResponse({"status": 14402, "msg": "身份令牌无效,请求中止"}) else: if user_data["user_status"] == 2: return JsonResponse({"status": 14402, "msg": "已被封禁,请联系管理员."}) # record log try: today = time.strftime("%Y-%m-%d", time.localtime()) if "product_release" in self.path: flag = "登录" today_is_login = UserLog.objects.filter(Q(create_time__gte=today) & Q(flag="登录") & Q(ip=self.ip)).\ values("id","user_id") if len(today_is_login) == 0: record_log = UserLog(user_id=get_user_object(request), ip=self.ip, flag=flag) record_log.save() else: log_id = list(today_is_login)[0]['id'] record_log = UserLog.objects.get(id=log_id) record_log.update_time = time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime()) record_log.save() except Exception as e: print(e) pass # 检查访问权限 if user_data["Group"] == "admin": return None elif self.path == "/api/user/pages": return None else: # 检查接口权限 is_allow = ApiPermissions.objects.\ filter(Q(group=user_data["Group"]) & Q(api_id__url=self.path) & Q(is_allow=1)).count() if is_allow == 1: return None else: return JsonResponse({ "status": 14444, "msg": "您没有此接口的访问权限,请联系管理员" }) # 项目权限检查 if self.product_code: try: user_id = user_data["uid"] ProductMembers.objects.get( Q(product_code=self.product_code) & Q(member_id=user_id) & Q(status=0)) except Exception as e: return JsonResponse({ "status": 14444, "msg": "您不在此项目中,请联系管理员" }) else: return JsonResponse({"status": 14444, "msg": "错误的产品名称"})
def create(request): try: req = json.loads(request.body) product_code = req["product_code"] release = req["release"] title = req["title"] steps = req["steps"] reality_result = req["reality_result"] expected_result = req["expected_result"] priority = req["priority"] severity = req["severity"] assignedTo = req["assignedTo_id"] annex = req["annex"] bug_type = req["bug_type"] except Exception as e: return JsonResponse({"status":40001,"msg":"缺少必要的参数"}) m1_id,m2_id = None,None if "module_id" in req and req["module_id"]: try: m1_id = ModuleA.objects.get(id=req["module_id"][0]) except Exception as e: return JsonResponse({"status": 40004, "msg": u"产品模块无效."}) if len(req["module_id"]) == 2: try: m2_id = req["module_id"][1] m2_id = ModuleB.objects.get(id=m2_id) except Exception as e: return JsonResponse({"status": 40004, "msg": u"产品模块无效."}) try: if "case_id" in req and req["case_id"]: case_id = req["case_id"] case_obj = TestCase.objects.get(case_id=case_id) else: case_obj = None except Exception as e: return JsonResponse({"status":40001,"msg":"case_id无效"}) try: if "cell_id" in req and req["cell_id"]: cell_id = req["cell_id"] cell_obj = TestSuiteCell.objects.get(cell_id=cell_id) else: cell_obj = None except Exception as e: return JsonResponse({"status":40001,"msg":"cell_id无效"}) if assignedTo: assignedTo = req["assignedTo_id"] try: assignedTo_object = User.objects.get(user_id=assignedTo) except Exception as e: return JsonResponse({"status":40004,"msg":"指派人不存在"}) assignedToDate = curremt_time status = BugStatus.objects.get(key="Open") else: assignedTo_object = None assignedToDate = None status = BugStatus.objects.get(key="New") # product_code try: product_object = Product.objects.get(product_code=product_code) except Exception as e: return JsonResponse({"status":40004,"msg":"产品名称无效"}) # version_object try: version_object = Release.objects.get(Q(product_code=product_code) & Q(version=release)) except Exception as e: return JsonResponse({"status":40004,"msg":"版本号无效"}) # priority try: priority_object = BugPriority.objects.get(key=priority) except Exception as e: return JsonResponse({"status":40004,"msg":"优先级值无效"}) # severity try: severity_object = BugSeverity.objects.get(key=severity) except Exception as e: return JsonResponse({"status":40004,"msg":"严重程度值无效"}) # BugType try: bug_type_object = BugType.objects.get(key=bug_type) except Exception as e: return JsonResponse({"status":40004,"msg":"缺陷类型无效"}) # remark if "remark" in req: remark = req["remark"] else: remark = "" try: bug = Bug( product_code = product_object, version_id = version_object, priority = priority_object, severity = severity_object, bug_type = bug_type_object, creator_id = get_user_object(request), title = title, steps = steps, reality_result = reality_result, expected_result = expected_result, assignedTo_id = assignedTo_object, assignedTo_time = assignedToDate, remark = remark, status = status, case_id = case_obj, cell_id = cell_obj, m1_id = m1_id, m2_id = m2_id ) bug.save() except Exception as e: print(e) return JsonResponse({"status":20004,"msg":"提交bug失败"}) else: bug_id = Bug.objects.get(bug_id=bug.bug_id) # 记录日志 try: bug_log_record(request,get_user_object(request),bug_id,"create") except Exception as e: pass # 保存附件 try: if annex: for f in annex: aex = BugAnnex( bug_id = bug_id, url = f ) aex.save() except Exception as e: Bug.objects.get(bug_id=bug_id).delete() return JsonResponse({"status":20004,"msg":"bug附件错误"}) else: return JsonResponse({"status":20000,"msg":"缺陷保存成功"})