Example #1
0
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")