def key_create(request): if request.method == "GET": branchs = BranchInfo.objects().order_by('-programName', 'branchTag') program_list = [] tag_dict = {} for branch in branchs: program_name = branch.programName if program_name in tag_dict: tag_dict[program_name].append({ 'id': str(branch.id), 'tag': branch.branchTag }) else: program_list.append(program_name) tag_dict[program_name] = [{ 'id': str(branch.id), 'tag': branch.branchTag }] program_list_json = json.dumps(program_list) tag_dict_json = json.dumps(tag_dict) return render_to_response("programBranch/key_submit_create.html", locals(), context_instance=RequestContext(request)) elif request.method == 'POST': response = {"success": False, "error": ""} try: # 获取参数 json_str = request.POST.get('json', None) if not json_str: response['error'] = '必要参数为空!' return HttpResponse(json.dumps(response), mimetype="application/json") json_obj = json.loads(json_str) remark = json_obj['remark'] id = json_obj['id'] revision_1 = int(json_obj['revision_1']) revision_2 = json_obj['revision_2'] revision_2 = revision_1 if revision_2 is None else int(revision_2) branch = BranchInfo.objects(pk=id) if not branch: response['error'] = '未找到分支对象!' return HttpResponse(json.dumps(response), mimetype="application/json") branch = branch[0] # 验证是否重叠 exists = KeySubmit.objects(branch=branch, revision_start__lte=revision_1, revision_end__gte=revision_2) if exists: response['error'] = '关键提交重叠!' return HttpResponse(json.dumps(response), mimetype="application/json") key_submit = KeySubmit() key_submit.branch = branch key_submit.revision_start = revision_1 key_submit.revision_end = revision_2 key_submit.remark = remark key_submit.create_time = datetime.datetime.now() key_submit.create_user = User.objects.get(pk=request.user.id) key_submit.save() response["success"] = True response["error"] = "执行成功!" return HttpResponse(json.dumps(response), mimetype="application/json") except Exception, e: response["error"] = "系统异常![%s]" % str(e) logger.error(response["error"] + getTraceBack()) return HttpResponse(json.dumps(response), mimetype="application/json")