def post_request_ext1(request): form, error = JsonParser( Argument('id', type=int, required=False), Argument('deploy_id', type=int, help='参数错误'), Argument('name', help='请输入申请标题'), Argument('extra', type=list, help='请选择发布版本'), Argument('host_ids', type=list, filter=lambda x: len(x), help='请选择要部署的主机'), Argument('type', default='1'), Argument('plan', required=False), Argument('desc', required=False), ).parse(request.body) if error is None: deploy = Deploy.objects.get(pk=form.deploy_id) form.spug_version = Repository.make_spug_version(deploy.id) if form.extra[0] == 'tag': if not form.extra[1]: return json_response(error='请选择要发布的版本') form.version = form.extra[1] elif form.extra[0] == 'branch': if not form.extra[2]: return json_response(error='请选择要发布的分支及Commit ID') form.version = f'{form.extra[1]}#{form.extra[2][:6]}' elif form.extra[0] == 'repository': if not form.extra[1]: return json_response(error='请选择要发布的版本') repository = Repository.objects.get(pk=form.extra[1]) form.repository_id = repository.id form.version = repository.version form.spug_version = repository.spug_version form.extra = ['repository'] + json.loads(repository.extra) else: return json_response(error='参数错误') form.extra = json.dumps(form.extra) form.status = '0' if deploy.is_audit else '1' form.host_ids = json.dumps(sorted(form.host_ids)) if form.id: req = DeployRequest.objects.get(pk=form.id) is_required_notify = deploy.is_audit and req.status == '-1' DeployRequest.objects.filter(pk=form.id).update( created_by=request.user, reason=None, **form) else: req = DeployRequest.objects.create(created_by=request.user, **form) is_required_notify = deploy.is_audit if is_required_notify: Thread(target=Helper.send_deploy_notify, args=(req, 'approve_req')).start() return json_response(error=error)
def post_request_ext2(request): form, error = JsonParser( Argument('id', type=int, required=False), Argument('deploy_id', type=int, help='缺少必要参数'), Argument('name', help='请输申请标题'), Argument('host_ids', type=list, filter=lambda x: len(x), help='请选择要部署的主机'), Argument('extra', type=dict, required=False), Argument('version', default=''), Argument('type', default='1'), Argument('plan', required=False), Argument('desc', required=False), ).parse(request.body) if error is None: deploy = Deploy.objects.filter(pk=form.deploy_id).first() if not deploy: return json_response(error='未找到该发布配置') extra = form.pop('extra') if DeployExtend2.objects.filter( deploy=deploy, host_actions__contains='"src_mode": "1"').exists(): if not extra: return json_response( error='该应用的发布配置中使用了数据传输动作且设置为发布时上传,请上传要传输的数据') form.spug_version = extra['path'] form.extra = json.dumps(extra) else: form.spug_version = Repository.make_spug_version(deploy.id) form.name = form.name.replace("'", '') form.status = '0' if deploy.is_audit else '1' form.host_ids = json.dumps(form.host_ids) if form.id: req = DeployRequest.objects.get(pk=form.id) is_required_notify = deploy.is_audit and req.status == '-1' DeployRequest.objects.filter(pk=form.id).update( created_by=request.user, reason=None, **form) else: req = DeployRequest.objects.create(created_by=request.user, **form) is_required_notify = deploy.is_audit if is_required_notify: Thread(target=Helper.send_deploy_notify, args=(req, 'approve_req')).start() return json_response(error=error)
def post(self, request): form, error = JsonParser( Argument('deploy_id', type=int, help='参数错误'), Argument('version', help='请输入构建版本'), Argument('extra', type=list, help='参数错误'), Argument('remarks', required=False) ).parse(request.body) if error is None: deploy = Deploy.objects.filter(pk=form.deploy_id).first() if not deploy: return json_response(error='未找到指定发布配置') form.extra = json.dumps(form.extra) form.spug_version = Repository.make_spug_version(deploy.id) rep = Repository.objects.create( app_id=deploy.app_id, env_id=deploy.env_id, created_by=request.user, **form) Thread(target=dispatch, args=(rep,)).start() return json_response(rep.to_view()) return json_response(error=error)