def save(request, validator=ScriptSaveForm): """ 保存脚本 """ me = request.session.get("username") script_id = request.formdata.get("script_id") name = request.formdata.get("name") content = request.formdata.get("content") type = request.formdata.get("type") project_id = request.formdata.get("project_id") if sys.getsizeof(content) / 1024 > 50: return jsonify(success=False, msg=u"脚本不能超过50KB") try: script = Script.objects.get(id=script_id, project_id=project_id) except: return jsonify(code=1, success=False, msg=u"脚本不存在") #相同业务,存在id不同,但name相同的脚本,报错 if Script.objects.filter(project_id=project_id, name=name).exists() and script.name != name: return jsonify(code=2, success=False, msg=u"脚本名不能重复") script.name = name script.content = compress(content) script.type = type script.last_user = me script.save() return jsonify(success=True)
def delete(request, validator=UserDelForm): """ 删除用户 """ project_id = request.formdata.get("project_id") users_id = request.formdata.get("users_id") try: users_id = list(set(json.loads(users_id))) except: return jsonify(success=False, msg=u"表单参数有误") for user_id in users_id: if not isinstance(user_id, int): return jsonify(success=False, msg=u"表单参数有误") users = User.objects.filter(id__in=users_id, project_id=project_id) if not users.count(): return jsonify(success=False, msg=u"用户不存在") if ScriptNode.objects.filter(user__in=users).exists(): return jsonify(success=False, msg=u"用户正在被使用") users.delete() return jsonify(success=True)
def template(request, validator = ScriptTemplateForm): """ 获取脚本模版 """ project_id = request.formdata.get("project_id") type = request.formdata.get("type") base_dir = settings.BASE_DIR template_dir = base_dir + "/apps/manage/common/template" script_path = None if(type == 1): script_path = template_dir + "/template.sh" elif(type == 2): script_path = template_dir + "/template.bat" elif(type == 3): script_path = template_dir + "/template.py" else: pass data = None if os.path.exists(script_path) and os.path.isfile(script_path): fp = open(script_path, "r") data = fp.read() fp.close() else: return jsonify(success = False, msg = u"脚本模版不存在") return jsonify(success = True, data = data)
def save(request, validator = ScriptSaveForm): """ 保存脚本 """ me = request.session.get("username") script_id = request.formdata.get("script_id") name = request.formdata.get("name") content = request.formdata.get("content") type = request.formdata.get("type") project_id = request.formdata.get("project_id") if sys.getsizeof(content)/1024 > 50: return jsonify(success = False, msg = u"脚本不能超过50KB") try: script = Script.objects.get(id = script_id, project_id = project_id) except: return jsonify(code = 1, success = False, msg = u"脚本不存在") #相同业务,存在id不同,但name相同的脚本,报错 if Script.objects.filter(project_id = project_id, name = name).exists() and script.name != name: return jsonify(code = 2, success = False, msg = u"脚本名不能重复") script.name = name script.content = compress(content) script.type = type script.last_user = me script.save() return jsonify(success = True)
def delete(request, validator = ScriptDelForm): """ 删除脚本 """ project_id = request.formdata.get("project_id") scripts_id = request.formdata.get("scripts_id") try: scripts_id = list(set(json.loads(scripts_id))) except: return jsonify(code = 2, success = False, msg = u"表单参数有误") for script_id in scripts_id: if not isinstance(script_id, int): return jsonify(code = 3, success = False, msg = u"表单参数有误") scripts = Script.objects.filter(id__in = scripts_id, project_id = project_id) if not scripts.count(): return jsonify(success = False, msg = u"脚本不存在") if ScriptNode.objects.filter(script__in = scripts).exists(): return jsonify(success = False, msg = u"脚本正在被使用") scripts.delete() return jsonify(success = True)
def add(request, validator = ScriptAddForm): """ 新建脚本 """ me = request.session.get("username") name = request.formdata.get("name") content = request.formdata.get("content") type = request.formdata.get("type") project_id = request.formdata.get("project_id") if sys.getsizeof(content)/1024 > 50: return jsonify(success = False, msg = u"脚本不能超过50KB") if Script.objects.filter(name = name, project_id = project_id).exists(): return jsonify(success = False, msg = u"脚本已存在") script = Script() script.name = name script.content = compress(content) script.type = type script.create_user = me script.last_user = me script.project_id = project_id script.save() return jsonify(success = True)
def add(request, validator=ProcedureAddForm): """ 新建流程 """ project_id = request.formdata.get("project_id") procedure = request.formdata.get("procedure") try: procedure_dict = json.loads(procedure) except Exception: return jsonify(test={"code": 1}, success=False, msg=u"表单数据格式错误") success, msg, procedure_checked = procedureCheck(project_id, procedure_dict, check_unique=True) if not success: return jsonify(test={"code": 2}, success=False, msg=msg) me = request.session.get("username") procedure_id = do_addProcedure(me, project_id, procedure_checked) return jsonify(test={ "code": 4, "id": procedure_id }, success=True, msg=u"添加成功")
def getNode(request, validator=HistoryNodeForm): """ 获取节点历史数据 """ project_id = request.formdata.get("project_id") node_id = request.formdata.get("node_id") try: node = HistoryScriptNode.objects.get(id=node_id) except Exception: return jsonify(test={"code": 3}, success=False, msg=u"未找到节点记录") data = {} data["id"] = node.id data["name"] = node.name data["user"] = node.user data["type"] = 1 data["start_time"] = humanReadableDate(node.start_time) data["end_time"] = humanReadableDate(node.end_time) data["total_time"] = node.total_time data["status"] = node.status servers = [] server_objs = HistoryScriptServer.objects.filter(node_id=node_id) for obj in server_objs: server = {} server["id"] = obj.id server["host"] = obj.host server["code"] = obj.code server["total_time"] = obj.total_time servers.append(server) data["servers"] = servers return jsonify(test={"code": 4}, success=True, data=data)
def delete(request, validator=ScriptDelForm): """ 删除脚本 """ project_id = request.formdata.get("project_id") scripts_id = request.formdata.get("scripts_id") try: scripts_id = list(set(json.loads(scripts_id))) except: return jsonify(code=2, success=False, msg=u"表单参数有误") for script_id in scripts_id: if not isinstance(script_id, int): return jsonify(code=3, success=False, msg=u"表单参数有误") scripts = Script.objects.filter(id__in=scripts_id, project_id=project_id) if not scripts.count(): return jsonify(success=False, msg=u"脚本不存在") if ScriptNode.objects.filter(script__in=scripts).exists(): return jsonify(success=False, msg=u"脚本正在被使用") scripts.delete() return jsonify(success=True)
def runTemp(request, validator=ProcedureAddForm): """ 临时流程执行 """ project_id = request.formdata.get("project_id") procedure = request.formdata.get("procedure") try: procedure_dict = json.loads(procedure) except Exception: return jsonify(test={"code": 1}, success=False, msg=u"表单数据格式错误") success, msg, procedure_checked = procedureCheck(project_id, procedure_dict) if not success: return jsonify(test={"code": 2}, success=False, msg=msg) me = request.session.get("username") task = do_createTask(project_id, me, procedure_checked) ret = execute(task=task) return jsonify(test={ "code": 4, "engine": ret, "id": task.get("id") }, success=True, data=task.get("id"))
def add(request, validator=ScriptAddForm): """ 新建脚本 """ me = request.session.get("username") name = request.formdata.get("name") content = request.formdata.get("content") type = request.formdata.get("type") project_id = request.formdata.get("project_id") if sys.getsizeof(content) / 1024 > 50: return jsonify(success=False, msg=u"脚本不能超过50KB") if Script.objects.filter(name=name, project_id=project_id).exists(): return jsonify(success=False, msg=u"脚本已存在") script = Script() script.name = name script.content = compress(content) script.type = type script.create_user = me script.last_user = me script.project_id = project_id script.save() return jsonify(success=True)
def template(request, validator=ScriptTemplateForm): """ 获取脚本模版 """ project_id = request.formdata.get("project_id") type = request.formdata.get("type") base_dir = settings.BASE_DIR template_dir = base_dir + "/apps/manage/common/template" script_path = None if (type == 1): script_path = template_dir + "/template.sh" elif (type == 2): script_path = template_dir + "/template.bat" elif (type == 3): script_path = template_dir + "/template.py" else: pass data = None if os.path.exists(script_path) and os.path.isfile(script_path): fp = open(script_path, "r") data = fp.read() fp.close() else: return jsonify(success=False, msg=u"脚本模版不存在") return jsonify(success=True, data=data)
def save(request, validator = ProcedureSaveForm): """ 保存流程 """ project_id = request.formdata.get("project_id") procedure_id = request.formdata.get("procedure_id") procedure = request.formdata.get("procedure") try: procedure_dict = json.loads(procedure) except Exception: return jsonify(test = {"code": 1}, success = False, msg = u"表单数据格式错误") try: old_procedure = Procedure.objects.get(id = procedure_id, project_id = project_id) except: return jsonify(test = {"code": 2}, success = False, msg = u"流程不存在") # 先删除原有数据再新建流程 create_user = do_deleteProcedure(old_procedure) success, msg, procedure_checked = procedureCheck(project_id, procedure_dict, check_unique = True) if not success: return jsonify(test = {"code": 3}, success = False, msg = msg) me = request.session.get("username") do_addProcedure(me, project_id, procedure_checked, id = procedure_id, create_user = create_user) return jsonify(test = {"code": 4}, success = True, msg = u"保存成功")
def getNode(request, validator = HistoryNodeForm): """ 获取节点历史数据 """ project_id = request.formdata.get("project_id") node_id = request.formdata.get("node_id") try: node = HistoryScriptNode.objects.get(id = node_id) except Exception: return jsonify(test = {"code": 3}, success = False, msg = u"未找到节点记录") data = {} data["id"] = node.id data["name"] = node.name data["user"] = node.user data["type"] = 1 data["start_time"] = humanReadableDate(node.start_time) data["end_time"] = humanReadableDate(node.end_time) data["total_time"] = node.total_time data["status"] = node.status servers = [] server_objs = HistoryScriptServer.objects.filter(node_id = node_id) for obj in server_objs: server = {} server["id"] = obj.id server["host"] = obj.host server["code"] = obj.code server["total_time"] = obj.total_time servers.append(server) data["servers"] = servers return jsonify(test = {"code": 4}, success = True, data = data)
def getServer(request, validator=HistoryServerForm): """ 获取服务器执行结果数据 """ project_id = request.formdata.get("project_id") server_id = request.formdata.get("server_id") try: server = HistoryScriptServer.objects.get(id=server_id) except Exception: return jsonify(test={"code": 3}, success=False, msg=u"未找到服务器") log = dcompress(server.log) return jsonify(test={"code": 4}, success=True, data=log)
def getServer(request, validator = HistoryServerForm): """ 获取服务器执行结果数据 """ project_id = request.formdata.get("project_id") server_id = request.formdata.get("server_id") try: server = HistoryScriptServer.objects.get(id = server_id) except Exception: return jsonify(test = {"code": 3}, success = False, msg = u"未找到服务器") log = dcompress(server.log) return jsonify(test = {"code": 4}, success = True, data = log)
def delete(request, validator = ProcedureGetForm): """ 删除流程 """ project_id = request.formdata.get("project_id") procedure_id = request.formdata.get("procedure_id") try: procedure = Procedure.objects.get(id = procedure_id, project_id = project_id) except Exception: return jsonify(test = {"code": 2}, success = False, msg = u"流程不存在") do_deleteProcedure(procedure, delete_script = False) return jsonify(test = {"code": 4}, success = True)
def delete(request, validator=ProcedureGetForm): """ 删除流程 """ project_id = request.formdata.get("project_id") procedure_id = request.formdata.get("procedure_id") try: procedure = Procedure.objects.get(id=procedure_id, project_id=project_id) except Exception: return jsonify(test={"code": 2}, success=False, msg=u"流程不存在") do_deleteProcedure(procedure, delete_script=False) return jsonify(test={"code": 4}, success=True)
def process_view(self, request, view_func, view_args, view_kwargs): if request.path in self.white_list: return if not request.session.get("username"): return jsonify(code = 1000, success = False) return
def run(request): """ 流程执行 """ # project_id = request.formdata.get("project_id") # task = do_createTask() # ret = execute(task = task) data = [{ "host": "8.8.8.8", "os": u'Linux', "owner": u"张三", "desc": u"我是张三" }, { "host": "9.9.9.9", "os": u'Windows', "owner": u"李四", "desc": u"我是李四" }, { "host": "7.7.7.7", "os": u'Windows', "owner": u"王五", "desc": u"我是王五" }] return jsonify(test={"code": 4}, success=True, data=data)
def process_view(self, request, view_func, view_args, view_kwargs): if request.path in self.white_list: return if not request.session.get("username"): return jsonify(code=1000, success=False) return
def get(request, validator = ServerForm): """ 获取服务器列表 """ project_id = request.formdata.get("project_id") cache = request.formdata.get("cache") service = getCmdbService() try: ret = service.cmdb.getServer(project_id = project_id, cache = cache) except: return jsonify(test = {"code": 3}, success = False, msg = u"资产系统异常") result = ret.get("result") data = result.get("data") return jsonify(test = {"code": 4}, success = True, data = data)
def get(request, validator=ServerForm): """ 获取服务器列表 """ project_id = request.formdata.get("project_id") cache = request.formdata.get("cache") service = getCmdbService() try: ret = service.cmdb.getServer(project_id=project_id, cache=cache) except: return jsonify(test={"code": 3}, success=False, msg=u"资产系统异常") result = ret.get("result") data = result.get("data") return jsonify(test={"code": 4}, success=True, data=data)
def run(request, validator=ProcedureGetForm): """ 流程执行 """ project_id = request.formdata.get("project_id") procedure_id = request.formdata.get("procedure_id") try: procedure = Procedure.objects.get(id=procedure_id, project_id=project_id) except Exception: return jsonify(test={"code": 2}, success=False, msg=u"流程不存在") procedure_dict = {} procedure_dict["name"] = procedure.name steps = [] step_objs = Step.objects.filter(procedure_id=procedure_id) for step in step_objs: step_ = {} step_["name"] = step.name step_["type"] = step.type step_["index"] = step.index nodes = [] node_objs = ScriptNode.objects.filter(step_id=step.id) for node in node_objs: node_ = {} node_["name"] = node.script.name node_["type"] = node.script.type node_["args"] = node.args node_["user"] = node.user node_["index"] = node.index node_["status"] = 0 node_["content"] = node.script.content node_["servers"] = node.servers nodes.append(node_) step_["nodes"] = nodes steps.append(step_) procedure_dict["steps"] = steps me = request.session.get("username") task = do_createTask(project_id, me, procedure_dict) execute(task=task) return jsonify(test={"code": 4}, success=True, data=task.get("id"))
def add(request, validator=UserAddForm): """ 添加用户 """ me = request.session.get("username") project_id = request.formdata.get("project_id") name = request.formdata.get("name") if User.objects.filter(name=name, project_id=project_id).exists(): return jsonify(success=False, msg=u"用户已存在") user = User() user.name = name user.project_id = project_id user.create_user = me user.save() return jsonify(test={"id": user.id}, success=True, msg=u"用户添加成功")
def login(request, validator = LoginForm): """ 用户登录 """ username = request.formdata.get("username") password = request.formdata.get("password") service = getAuthService() try: ret = service.auth.login(username = username, password = password) except Exception: return jsonify(test = {"code": 2}, success = False, msg = u"权限系统异常") result = ret.get("result", {}) success = result.get("success") if not success: return jsonify(test = {"code": 3}, success = False, msg = u"用户名或密码错误") data = result.get("data", {}) user = data.get("user", {}) user_id = user.get("id") username = user.get("username") project = data.get("project") if not project: return jsonify(test = {"code": 4}, success = False, msg = u"请先申请业务权限") service = getCmdbService() try: ret = service.cmdb.getProject(project_id = project) except Exception: return jsonify(test = {"code": 5}, success = False, msg = u"资产系统异常") result = ret.get("result", {}) projects = result.get("data") if not projects: return jsonify(test = {"code": 6}, success = False, msg = u"业务数据错误") request.session["user_id"] = user_id request.session["username"] = username request.session["project"] = projects return get(request)
def run(request, validator = ProcedureGetForm): """ 流程执行 """ project_id = request.formdata.get("project_id") procedure_id = request.formdata.get("procedure_id") try: procedure = Procedure.objects.get(id = procedure_id, project_id = project_id) except Exception: return jsonify(test = {"code": 2}, success = False, msg = u"流程不存在") procedure_dict = {} procedure_dict["name"] = procedure.name steps = [] step_objs = Step.objects.filter(procedure_id = procedure_id) for step in step_objs: step_ = {} step_["name"] = step.name step_["type"] = step.type step_["index"] = step.index nodes = [] node_objs = ScriptNode.objects.filter(step_id = step.id) for node in node_objs: node_ = {} node_["name"] = node.script.name node_["type"] = node.script.type node_["args"] = node.args node_["user"] = node.user node_["index"] = node.index node_["status"] = 0 node_["content"] = node.script.content node_["servers"] = node.servers nodes.append(node_) step_["nodes"] = nodes steps.append(step_) procedure_dict["steps"] = steps me = request.session.get("username") task = do_createTask(project_id, me, procedure_dict) execute(task = task) return jsonify(test = {"code": 4}, success = True, data = task.get("id"))
def retry(request, validator = HandleForm): """ 失败主机重试 """ project_id = request.formdata.get("project_id") task_id = request.formdata.get("task_id") step_id = request.formdata.get("step_id") node_id = request.formdata.get("node_id") try: task = do_resumeTask(do_getProcedure(project_id, task_id), step_id, node_id, handler = retryHandler) except NotFoundException: return jsonify(test = {"code": 3}, success = False, msg = u"忽略错误失败") except StatusErrorException: return jsonify(test = {"code": 4}, success = False, msg = u"忽略错误失败") ret = execute(task = task) return jsonify(test = {"engine": ret}, success = True, msg = u"流程继续执行")
def getTask(request, validator=HistoryTaskForm): """ 获取任务历史数据 """ project_id = request.formdata.get("project_id") task_id = request.formdata.get("task_id") try: task = HistoryTask.objects.get(id=task_id, project_id=project_id) except Exception: return jsonify(test={"code": 3}, success=False, msg=u"未找到任务记录") data = {} data["name"] = task.name data["status"] = task.status data["user"] = task.user data["total_time"] = task.total_time data["start_time"] = humanReadableDate(task.start_time) data["end_time"] = humanReadableDate(task.end_time) steps = [] step_objs = HistoryStep.objects.filter(task_id=task_id) for step in step_objs: step_ = {} step_["id"] = step.id step_["name"] = step.name step_["type"] = step.type nodes = [] node_objs = HistoryScriptNode.objects.filter(step_id=step.id) for node in node_objs: node_ = {} node_["id"] = node.id node_["name"] = node.name node_["start_time"] = humanReadableDate(node.start_time) node_["end_time"] = humanReadableDate(node.end_time) node_["total_time"] = node.total_time node_["status"] = node.status node_["num"] = node.historyscriptserver_set.count() nodes.append(node_) step_["nodes"] = nodes steps.append(step_) data["steps"] = steps return jsonify(test={"code": 4, "task": data}, success=True, data=data)
def getTask(request, validator = HistoryTaskForm): """ 获取任务历史数据 """ project_id = request.formdata.get("project_id") task_id = request.formdata.get("task_id") try: task = HistoryTask.objects.get(id = task_id, project_id = project_id) except Exception: return jsonify(test = {"code": 3}, success = False, msg = u"未找到任务记录") data = {} data["name"] = task.name data["status"] = task.status data["user"] = task.user data["total_time"] = task.total_time data["start_time"] = humanReadableDate(task.start_time) data["end_time"] = humanReadableDate(task.end_time) steps = [] step_objs = HistoryStep.objects.filter(task_id = task_id) for step in step_objs: step_ = {} step_["id"] = step.id step_["name"] = step.name step_["type"] = step.type nodes = [] node_objs = HistoryScriptNode.objects.filter(step_id = step.id) for node in node_objs: node_ = {} node_["id"] = node.id node_["name"] = node.name node_["start_time"] = humanReadableDate(node.start_time) node_["end_time"] = humanReadableDate(node.end_time) node_["total_time"] = node.total_time node_["status"] = node.status node_["num"] = node.historyscriptserver_set.count() nodes.append(node_) step_["nodes"] = nodes steps.append(step_) data["steps"] = steps return jsonify(test = {"code": 4, "task": data}, success = True, data = data)
def get(request, validator = ScriptGetForm): """ 返回脚本内容 """ project_id = request.formdata.get("project_id") script_id = request.formdata.get("script_id") try: script = Script.objects.values("name", "content", "type").get(id = script_id, project_id = project_id) except Exception: return jsonify(success = False, msg = u"脚本不存在") data = { "name": script.get("name"), "content": dcompress(script.get("content")), "type": script.get("type") } return jsonify(success = True, data = data)
def process_view(self, request, view_func, view_args, view_kwargs): if request.path in self.white_list: return project_id = request.formdata.get("project_id") user_id = request.session.get("user_id") if not hasPermissionProject(user_id, project_id): return jsonify(test = {"code": 600}, success = False, msg = u"当前用户没有业务权限") return
def get(request, validator=ProjectForm): """ 获取业务数据 """ project_id = request.formdata.get("project_id") servers = 250 procedures = Procedure.objects.filter(project_id=project_id).count() gte_time = datetime.date.today() - datetime.timedelta(days=7) tasks = HistoryTask.objects.filter( project_id=project_id, start_time__gte=gte_time).order_by("-start_time").values() total = len(tasks) success = 0 fail = 0 runing = 0 tasks = tasks[0:10] for task in tasks: task["start_time"] = humanReadableDate(task["start_time"]) task["end_time"] = humanReadableDate(task["end_time"]) status = task.get("status") if status == 0: runing += 1 elif status == 1: success += 1 elif status == 2: fail += 1 else: pass status = { "total": total, "success": success, "fail": fail, "runing": runing } data = { "tasks": list(tasks), "info": { "procedures": procedures, "servers": servers, "status": status } } return jsonify(test={"code": 3}, success=True, data=data)
def add(request, validator = ProcedureAddForm): """ 新建流程 """ project_id = request.formdata.get("project_id") procedure = request.formdata.get("procedure") try: procedure_dict = json.loads(procedure) except Exception: return jsonify(test = {"code": 1}, success = False, msg = u"表单数据格式错误") success, msg, procedure_checked = procedureCheck(project_id, procedure_dict, check_unique = True) if not success: return jsonify(test = {"code": 2}, success = False, msg = msg) me = request.session.get("username") procedure_id = do_addProcedure(me, project_id, procedure_checked) return jsonify(test = {"code": 4, "id": procedure_id}, success = True, msg = u"添加成功")
def getStep(request, validator=HistoryNodeForm): """ 获取步骤详情数据 """ project_id = request.formdata.get("project_id") node_id = request.formdata.get("node_id") try: node = HistoryScriptNode.objects.values("args", "type", "content").get(id=node_id) except: return jsonify(test={"code": 3}, success=False, msg=u"未找到节点记录") args = node.get("args") type = node.get("type") content = dcompress(node.get("content")) data = {"args": args, "type": type, "content": content} return jsonify(test={"code": 4}, success=True, data=data)
def get(request, validator=ScriptGetForm): """ 返回脚本内容 """ project_id = request.formdata.get("project_id") script_id = request.formdata.get("script_id") try: script = Script.objects.values("name", "content", "type").get(id=script_id, project_id=project_id) except Exception: return jsonify(success=False, msg=u"脚本不存在") data = { "name": script.get("name"), "content": dcompress(script.get("content")), "type": script.get("type") } return jsonify(success=True, data=data)
def process_view(self, request, view_func, view_args, view_kwargs): if request.path in self.white_list: return project_id = request.formdata.get("project_id") user_id = request.session.get("user_id") if not hasPermissionProject(user_id, project_id): return jsonify(test={"code": 600}, success=False, msg=u"当前用户没有业务权限") return
def show(request, validator=ProjectForm): """ 获取用户列表 """ project_id = request.formdata.get("project_id") users = User.objects.filter(project_id=project_id).values( "id", "name", "create_user", "create_time").order_by("-create_time") data = [] for user in users: user["create_time"] = humanReadableDate(user["create_time"]) data.append(user) return jsonify(success=True, data=data)
def retry(request, validator=HandleForm): """ 失败主机重试 """ project_id = request.formdata.get("project_id") task_id = request.formdata.get("task_id") step_id = request.formdata.get("step_id") node_id = request.formdata.get("node_id") try: task = do_resumeTask(do_getProcedure(project_id, task_id), step_id, node_id, handler=retryHandler) except NotFoundException: return jsonify(test={"code": 3}, success=False, msg=u"忽略错误失败") except StatusErrorException: return jsonify(test={"code": 4}, success=False, msg=u"忽略错误失败") ret = execute(task=task) return jsonify(test={"engine": ret}, success=True, msg=u"流程继续执行")
def show(request, validator = ProjectForm): """ 获取脚本列表 """ project_id = request.formdata.get("project_id") scripts = Script.objects.filter(project_id = project_id).values("id", "name", "create_user", "create_time", "last_user", "last_time").order_by("-last_time") data = [] for script in scripts: script["create_time"] = humanReadableDate(script["create_time"]) script["last_time"] = humanReadableDate(script["last_time"]) data.append(script) return jsonify(success = True, data = data)
def runTemp(request, validator = ProcedureAddForm): """ 临时流程执行 """ project_id = request.formdata.get("project_id") procedure = request.formdata.get("procedure") try: procedure_dict = json.loads(procedure) except Exception: return jsonify(test = {"code": 1}, success = False, msg = u"表单数据格式错误") success, msg, procedure_checked = procedureCheck(project_id, procedure_dict) if not success: return jsonify(test = {"code": 2}, success = False, msg = msg) me = request.session.get("username") task = do_createTask(project_id, me, procedure_checked) ret = execute(task = task) return jsonify(test = {"code": 4, "engine": ret, "id": task.get("id")}, success = True, data = task.get("id"))
def show(request, validator = ProjectForm): """ 显示常用流程 """ project_id = request.formdata.get("project_id") data = [] procedures = Procedure.objects.filter(project_id = project_id).values().order_by("-last_time") for procedure in procedures: procedure["create_time"] = humanReadableDate(procedure["create_time"]) procedure["last_time"] = humanReadableDate(procedure["last_time"]) data.append(procedure) return jsonify(test = {"code": 4, "data": data}, success = True, data = data)
def getStep(request, validator = HistoryNodeForm): """ 获取步骤详情数据 """ project_id = request.formdata.get("project_id") node_id = request.formdata.get("node_id") try: node = HistoryScriptNode.objects.values("args", "type", "content").get(id = node_id) except: return jsonify(test = {"code": 3}, success = False, msg = u"未找到节点记录") args = node.get("args") type = node.get("type") content = dcompress(node.get("content")) data = { "args": args, "type": type, "content": content } return jsonify(test = {"code": 4}, success = True, data = data)
def get(request, validator=ProcedureGetForm): """ 获取流程 """ project_id = request.formdata.get("project_id") procedure_id = request.formdata.get("procedure_id") try: procedure = Procedure.objects.get(id=procedure_id, project_id=project_id) except: return jsonify(test={"code": 1}, success=False, msg=u"流程不存在") data = {} data["name"] = procedure.name steps = [] step_objs = Step.objects.filter(procedure_id=procedure_id) for step in step_objs: step_ = {} step_["name"] = step.name step_["type"] = step.type nodes = [] node_objs = ScriptNode.objects.filter(step_id=step.id) for node in node_objs: node_ = {} node_["name"] = node.script.name node_["type"] = node.script.type node_["args"] = node.args node_["user"] = node.user_id node_["content"] = dcompress(node.script.content) node_["servers"] = node.servers.split("|") nodes.append(node_) step_["nodes"] = nodes steps.append(step_) data["steps"] = steps return jsonify(test={"code": 4}, success=True, data=data)
def get(request): """ 获取当前登录用户数据 """ user_id = request.session.get("user_id") username = request.session.get("username") project = request.session.get("project") ret = { "user_id": user_id, "username": username, "project": project } return jsonify(test = {"code": 7}, success = True, data = ret)
def show(request, validator=ProjectForm): """ 显示常用流程 """ project_id = request.formdata.get("project_id") data = [] procedures = Procedure.objects.filter( project_id=project_id).values().order_by("-last_time") for procedure in procedures: procedure["create_time"] = humanReadableDate(procedure["create_time"]) procedure["last_time"] = humanReadableDate(procedure["last_time"]) data.append(procedure) return jsonify(test={"code": 4, "data": data}, success=True, data=data)
def get(request, validator = ProcedureGetForm): """ 获取流程 """ project_id = request.formdata.get("project_id") procedure_id = request.formdata.get("procedure_id") try: procedure = Procedure.objects.get(id = procedure_id, project_id = project_id) except: return jsonify(test = {"code": 1}, success = False, msg = u"流程不存在") data = {} data["name"] = procedure.name steps = [] step_objs = Step.objects.filter(procedure_id = procedure_id) for step in step_objs: step_ = {} step_["name"] = step.name step_["type"] = step.type nodes = [] node_objs = ScriptNode.objects.filter(step_id = step.id) for node in node_objs: node_ = {} node_["name"] = node.script.name node_["type"] = node.script.type node_["args"] = node.args node_["user"] = node.user_id node_["content"] = dcompress(node.script.content) node_["servers"] = node.servers.split("|") nodes.append(node_) step_["nodes"] = nodes steps.append(step_) data["steps"] = steps return jsonify(test = {"code": 4}, success = True, data = data)
def save(request, validator=ProcedureSaveForm): """ 保存流程 """ project_id = request.formdata.get("project_id") procedure_id = request.formdata.get("procedure_id") procedure = request.formdata.get("procedure") try: procedure_dict = json.loads(procedure) except Exception: return jsonify(test={"code": 1}, success=False, msg=u"表单数据格式错误") try: old_procedure = Procedure.objects.get(id=procedure_id, project_id=project_id) except: return jsonify(test={"code": 2}, success=False, msg=u"流程不存在") # 先删除原有数据再新建流程 create_user = do_deleteProcedure(old_procedure) success, msg, procedure_checked = procedureCheck(project_id, procedure_dict, check_unique=True) if not success: return jsonify(test={"code": 3}, success=False, msg=msg) me = request.session.get("username") do_addProcedure(me, project_id, procedure_checked, id=procedure_id, create_user=create_user) return jsonify(test={"code": 4}, success=True, msg=u"保存成功")
def show(request, validator=ProjectForm): """ 获取脚本列表 """ project_id = request.formdata.get("project_id") scripts = Script.objects.filter(project_id=project_id).values( "id", "name", "create_user", "create_time", "last_user", "last_time").order_by("-last_time") data = [] for script in scripts: script["create_time"] = humanReadableDate(script["create_time"]) script["last_time"] = humanReadableDate(script["last_time"]) data.append(script) return jsonify(success=True, data=data)
def show(request, validator = HistoryGetForm): """ 获取任务历史列表 """ project_id = request.formdata.get("project_id") start = request.formdata.get("start") limit = request.formdata.get("limit") tasks_total = HistoryTask.objects.filter(project_id = project_id).count() tasks = HistoryTask.objects.filter(project_id = project_id).order_by("-start_time")[start:start + limit] data = list(tasks.values()) if data: for task in data: task["start_time"] = humanReadableDate(task["start_time"]) task["end_time"] = humanReadableDate(task["end_time"]) return jsonify(test = {"total": tasks_total}, success = True, total = tasks_total, data = data)
def process_view(self, request, view_func, view_args, view_kwargs): args_obj = inspect.getargspec(view_func) args_names = args_obj.args request.formdata = {} if "validator" not in args_names: return default_values = args_obj.defaults default_args = args_names[len(default_values) - len(args_names):] try: form_class = default_values[default_args.index("validator")] except Exception: raise Exception("validator must has a default value") form = form_class(request.POST) if not form.validate(): return jsonify(test={"code": 500}, success=False, msg=u"表单参数有误") request.formdata = form.data return
def show(request, validator=HistoryGetForm): """ 获取任务历史列表 """ project_id = request.formdata.get("project_id") start = request.formdata.get("start") limit = request.formdata.get("limit") tasks_total = HistoryTask.objects.filter(project_id=project_id).count() tasks = HistoryTask.objects.filter( project_id=project_id).order_by("-start_time")[start:start + limit] data = list(tasks.values()) if data: for task in data: task["start_time"] = humanReadableDate(task["start_time"]) task["end_time"] = humanReadableDate(task["end_time"]) return jsonify(test={"total": tasks_total}, success=True, total=tasks_total, data=data)
def process_view(self, request, view_func, view_args, view_kwargs): args_obj = inspect.getargspec(view_func) args_names = args_obj.args request.formdata = {} if "validator" not in args_names: return default_values = args_obj.defaults default_args = args_names[len(default_values) - len(args_names):] try: form_class = default_values[default_args.index("validator")] except Exception: raise Exception("validator must has a default value") form = form_class(request.POST) if not form.validate(): return jsonify(test = {"code": 500}, success = False, msg = u"表单参数有误") request.formdata = form.data return
def search(request): """ 查询脚本 """ return jsonify(success = True)
def search(request, validator = QueryForm): """ 查询历史 """ success, data, msg = query(request.formdata, HistoryTask) return jsonify(test = {"code": 2}, success = True, data = data, msg = msg)
def process_request(self, request): if request.method != "POST": return jsonify(code = 2000, success = False) return
def file(request): """ 快速文件分发 这个先不搞 """ return jsonify(success = True)
def script(request): """ 快速脚本执行 """ return jsonify(success = True)