def delmachine(machine_id): machine = Machine.query.get_or_404(machine_id) db.session.delete(machine) db.session.commit() clear_cache() flash(u"{0} has been deleted".format(machine.name), "success") return redirect(url_for("admin.showmachine"))
def addcase(): form = AddCaseForm(next=request.referrer) temp = [(0, _(u'请选择所属模块'))] form.module_type.choices = temp + [(item.id, _( item.name)) for item in ModuleType.query.get_allsubmodule()] if form.validate_on_submit(): case = Case() """ if form.attach_pre.has_file(): filename = up.save(form.attach_pre.data) case.precondition_path = unicode(filename) if form.attach_process.has_file(): filename = up.save(form.attach_process.data) case.process_path = unicode(filename) if form.attach_other.has_file(): filename = up.save(form.attach_other.data) case.other_path = unicode(filename) """ case.author_id = g.user.id form.populate_obj(case) if case.module_type: case.parent_id = ModuleType.query.get_or_404(form.module_type.data).\ parent_id db.session.add(case) db.session.commit() clear_cache() flash(u"Add {0} successfully!".format(case.title), "success") return redirect(form.next.data or url_for("case.showcase"))
def addcase(): form = AddCaseForm(next=request.referrer) temp = [(0, _(u'请选择所属模块'))] form.module_type.choices = temp + [(item.id, _(item.name)) for item in ModuleType.query. get_allsubmodule()] if form.validate_on_submit(): case = Case() """ if form.attach_pre.has_file(): filename = up.save(form.attach_pre.data) case.precondition_path = unicode(filename) if form.attach_process.has_file(): filename = up.save(form.attach_process.data) case.process_path = unicode(filename) if form.attach_other.has_file(): filename = up.save(form.attach_other.data) case.other_path = unicode(filename) """ case.author_id = g.user.id form.populate_obj(case) if case.module_type: case.parent_id = ModuleType.query.get_or_404(form.module_type.data).\ parent_id db.session.add(case) db.session.commit() clear_cache() flash(u"Add {0} successfully!".format(case.title), "success") return redirect(form.next.data or url_for("case.showcase")) parents = ModuleType.query.get_parent() nodes = ModuleType.query.get_allsubmodule() return render_template('case/case.html', form=form, parents=parents, nodes=nodes)
def addcode(): form = AddCodeForm(next=request.referrer) form.related_module.choices = [ (item.id, _(item.name)) for item in ModuleType.query.get_allsubmodule() ] if form.validate_on_submit(): code = Code() try: if form.path.has_file(): try: filename = upload_file(form) except: flash(u"错误的压缩文件内容,请重新上传", "error") return redirect(url_for("code.addcode")) code.author_id = g.user.id form.populate_obj(code) code.path = unicode(defaultconfig().CODE_URL + str(g.user) + "/" + str(form.name.data) + "/" + filename) code.parent_id = ModuleType.query.get_or_404( form.related_module.data).parent_id db.session.add(code) db.session.commit() clear_cache() flash(u"Add {0} successfully!".format(code.name), "success") return redirect(form.next.data or url_for("code.showcode")) except: flash(u"错误的文件类型,只允许ZIP或TAR", "error") return redirect(url_for("code.addcode")) parents = ModuleType.query.get_parent() nodes = ModuleType.query.get_allsubmodule() return render_template('code/code.html', form=form, parents=parents, nodes=nodes)
def copycase(case_id): case = Case.query.get_or_404(case_id) case.title = None form = EditCaseForm(case, next=request.referrer) #attention performance refresh db.session.refresh(case) #print form.module_type.data form.module_type.choices = [(item.id, _(item.name)) for item in ModuleType.query. get_allsubmodule()] if form.validate_on_submit(): new_case = Case() form.populate_obj(new_case) print new_case.title new_case.author_id = g.user.id if new_case.parent_id != ModuleType.query.\ get_or_404(form.module_type.data).parent_id: new_case.parent_id = ModuleType.query.\ get_or_404(form.module_type.data).parent_id new_case.case_create_time = datetime.now() new_case.case_update_time = datetime.now() db.session.add(new_case) db.session.commit() clear_cache() flash(u"Copy {0} successfully!".format(new_case.title), "success") return redirect(form.next.data or url_for("case.showcase")) parents = ModuleType.query.get_parent() nodes = ModuleType.query.get_allsubmodule() return render_template('case/editcase.html', form=form, parents=parents, nodes=nodes)
def delcase(case_id): case = Case.query.get_or_404(case_id) case.permissions.delete.test(403) db.session.delete(case) db.session.commit() clear_cache() flash(u"{0} has been deleted".format(case.title), "success") return redirect(request.referrer or url_for("case.showcase"))
def hudson_to_task(JOB_NAME, BUILD_NUMBER, BUILD_ID): task = Task.query.get_by_name(JOB_NAME) if task: input = [] output = [] id = [] caseall_id = [] casefail_id = [] other = [] if request.method == 'POST' and request.headers.get( "Referer") == 'izpautotest': #tmp1 = ['0','0','0'] #tmp_timing = time.strftime('%H:%M:%S',time.gmtime(tmp2-float(task.timing))) #tmp2 = time.mktime(tuple(int(i) for i in str(BUILD_NUMBER).replace('_','-').split('-') + tmp1)) try: tmp_timing = BUILD_NUMBER.replace( '_', ' ')[0:10] + BUILD_NUMBER.replace('-', ':').replace( '_', ' ')[10:] post_data = request.values.to_dict() taskcount = Taskcount() taskcount.task_id = task.id taskcount.case_all = len(task.case) if len(task.case) == len(eval(post_data.get('success'))): taskcount.fail_case = str(caseall_id) else: for name in task.case: case = Case.query.get_by_title(name) caseall_id.append(case.id) for i in caseall_id: if str(i) not in post_data.get('success'): casefail_id.append(i) taskcount.fail_case = str(casefail_id) taskcount.case_pass = post_data.get('case_pass') taskcount.case_fail = taskcount.case_all - eval( taskcount.case_pass) taskcount.result_path = post_data.get('result_path') taskcount.build_id = BUILD_ID taskcount.timing = tmp_timing task.timing = tmp_timing task.hudson = 4 name = task.name fail_num = taskcount.case_fail db.session.add(taskcount) db.session.add(task) db.session.commit() db.session.remove() clear_cache() if fail_num: subject = defaultconfig().MAIL_SUBJECT % (name, str(fail_num)) body = defaultconfig().MAIL_BODY % name mail_send(subject, body, defaultconfig().MAIL_RECEIVER) return 'OK'
def stoptask(task_id): task = Task.query.get_or_404(task_id) try: hud.disable_job(task.name) db.engine.execute("update task set hudson=3 where id=%s" % (task_id)) flash(u"Stop {0} sucessfully!".format(task.name), "success") except HudsonException: flash(u"Stop {0} fail".format(task.name), "fail") finally: clear_cache() return redirect(request.referrer or url_for("task.showtask"))
def delcode(code_id): code = Code.query.get_or_404(code_id) code.permissions.delete.test(403) cmd = "rm -rf " + defaultconfig().UPLOADED_FILES_DEST + str( g.user) + "/" + str(code.name) os.system(cmd) db.session.delete(code) db.session.commit() clear_cache() flash(u"{0} has been deleted".format(code.name), "success") return redirect(request.referrer or url_for("code.showcode"))
def addmachine(): form = AddMachineForm() if form.validate_on_submit(): machine = Machine() form.populate_obj(machine) db.session.add(machine) db.session.commit() clear_cache() flash(u"Add {0} successfully!".format(machine.name), "success") return redirect(url_for("admin.showmachine")) parents = ModuleType.query.get_parent() return render_template('admin/addmachine.html', form=form, parents=parents)
def runtask(task_id): task = Task.query.get_or_404(task_id) task.permissions.run.test(403) try: hud.build_job(task.name) flash(u"Run {0} successfully!".format(task.name), "success") except HudsonException: flash(u"Run {0} fail!".format(task.name), "fail") finally: clear_cache() db.engine.execute("update task set hudson=1 where id=%s" % (task_id)) return redirect(request.referrer or url_for("task.showtask"))
def hudson(): if request.method == 'POST': result = request.json if result.get("build").get("phase") == "FINISHED": task = Task.query.get_by_name(result.get("name")) if task and (task.hudson is not 4): task.hudson = 4 db.session.add(task) db.session.commit() db.session.remove() clear_cache() return "ok" return "fail"
def deltask(task_id): task = Task.query.get_or_404(task_id) task.permissions.delete.test(403) db.session.delete(task) db.session.commit() clear_cache() flash(u"{0} has been deleted".format(task.name), "success") try: hud.delete_job(task.name) except HudsonException: pass finally: return redirect(request.referrer or url_for("task.showtask"))
def delmodule(module_id): module = ModuleType.query.get_or_404(module_id) if module.parent_id == 0: sub_modules = ModuleType.query.\ getsubmodule_by_parentid(module.id) if sub_modules: for item in sub_modules: db.session.delete(item) db.session.delete(module) db.session.commit() clear_cache() flash(u"{0} has been deleted".format(module.name), "success") return redirect(url_for("admin.showmodule"))
def editmachine(machine_id): machine = Machine.query.get_or_404(machine_id) form = EditMachineForm(machine) if form.validate_on_submit(): machine.m_update_time = datetime.now() form.populate_obj(machine) db.session.commit() clear_cache() flash(u"Update {0} informatiion successfully".format(machine.name), "success") return redirect(url_for("admin.showmachine")) parents = ModuleType.query.get_parent() return render_template('admin/editmachine.html', form=form, parents=parents)
def addmodule(): form = AddModuleForm() choices = [(item.id, _(item.name)) for item in ModuleType.query.get_parent()] choices.append((0, _("parent"))) form.parent_id.choices = choices if form.validate_on_submit(): module = ModuleType() form.populate_obj(module) db.session.add(module) db.session.commit() clear_cache() flash(u"Add {0} successfully!".format(module.name), "success") return redirect(url_for("admin.showmodule")) parents = ModuleType.query.get_parent() return render_template('admin/module.html', form=form, parents=parents)
def editmodule(module_id): module = ModuleType.query.get_or_404(module_id) form = EditModuleForm(module) if module.parent_id: choices = [(item.id, _(item.name)) for item in ModuleType.query.get_parent()] choices.append((0, _("parent"))) else: choices = [(0, _("parent"))] form.parent_id.choices = choices if form.validate_on_submit(): module.type_update_time = datetime.now() form.populate_obj(module) db.session.commit() clear_cache() flash(u"Update {0} informatiion successfully".format(module.name), "success") return redirect(url_for("admin.showmodule")) parents = ModuleType.query.get_parent() return render_template('admin/module.html', form=form, parents=parents)
def editcode(code_id): code = Code.query.get_or_404(code_id) code.permissions.edit.test(403) form = EditCodeForm(code, next=request.referrer) form.related_module.choices = [ (item.id, _(item.name)) for item in ModuleType.query.get_allsubmodule() ] if form.validate_on_submit(): if form.path.has_file(): filename = up.save(form.path.data) print filename code.path = unicode(filename, "gbk") print code.path + "/n" code.code_update_time = datetime.now() code.parent_id = ModuleType.query.get_or_404( form.related_module.data).parent_id form.populate_obj(code) if code.parent_id != ModuleType.query.\ get_or_404(form.related_module.data).parent_id: code.parent_id = ModuleType.query.\ get_or_404(form.related_module.data).parent_id code.code_update_time = datetime.now() code.code_update_time = datetime.now() code.parent_id = ModuleType.query.get_or_404( form.related_module.data).parent_id db.session.add(code) db.session.commit() clear_cache() flash(u"Update {0} informatiion successfully".format(code.name), "success") return redirect(form.next.data or url_for("code.showcode")) parents = ModuleType.query.get_parent() nodes = ModuleType.query.get_allsubmodule() return render_template('code/code.html', form=form, parents=parents, nodes=nodes)
def editcase(case_id): case = Case.query.get_or_404(case_id) case.permissions.edit.test(403) form = EditCaseForm(case, next=request.referrer) #print form.module_type.data form.module_type.choices = [(item.id, _(item.name)) for item in ModuleType.query. get_allsubmodule()] if form.validate_on_submit(): """ if form.attach_pre.has_file(): filename = up.save(form.attach_pre.data) case.precondition_path = unicode(filename) if form.attach_process.has_file(): filename = up.save(form.attach_process.data) case.process_path = unicode(filename) if form.attach_other.has_file(): filename = up.save(form.attach_other.data) case.other_path = unicode(filename) if case.author_id != g.user.id: case.author_id = g.user.id """ form.populate_obj(case) if case.parent_id != ModuleType.query.\ get_or_404(form.module_type.data).parent_id: case.parent_id = ModuleType.query.\ get_or_404(form.module_type.data).parent_id case.case_update_time = datetime.now() db.session.add(case) db.session.commit() clear_cache() flash(u"Update {0} successfully!".format(case.title), "success") return redirect(form.next.data or url_for("case.showcase")) parents = ModuleType.query.get_parent() nodes = ModuleType.query.get_allsubmodule() return render_template('case/editcase.html', form=form, parents=parents, nodes=nodes)
def edittask(task_id): task = Task.query.get_or_404(task_id) task.permissions.edit.test(403) from_case = list() from_code = list() tmp_case = db.engine.execute("select cases_id from task_case where task_id=%s" % (task_id)).fetchall() tmp_code = db.engine.execute("select code_id from task_code where task_id=%s" % (task_id)).fetchall() if tmp_case: from_case = list(zip(*tmp_case)[0]) if tmp_code: from_code = list(zip(*tmp_code)[0]) form = EditTaskForm(task, next=request.referrer) form.moduletype_id.choices = [(item.id, _(item.name)) for item in ModuleType.query. get_allsubmodule()] form.machine_id.choices = [(item.id, _(item.name)) for item in Machine.query. get_all_ok()] '''In order to facilitate the query name, not to repeat the database query''' query_dict = dict(form.machine_id.choices) if form.validate_on_submit(): ''' if task.author_id != g.user.id: task.author_id = g.user.id ''' task.task_update_time = datetime.now() form.populate_obj(task) if task.parent_id != ModuleType.query.\ get_or_404(form.moduletype_id.data).parent_id: task.parent_id = ModuleType.query.\ get_or_404(form.moduletype_id.data).parent_id case = [] for case_id in request.form.getlist('case_test'): case.append(Case.query.get_or_404(case_id)) code = [] for code_id in request.form.getlist('code_test'): code.append(Code.query.get_or_404(code_id)) task.case = case task.code = code '''Notice:If master hudson is not named master,please change master to your name.''' node_name = query_dict.get(form.machine_id.data, 'master') if task.svn: message = dict(name=task.email_topic, start_time=task.runtime, svn=[eval(i) for i in task.svn.split(';')], url=request.url_root + "notice/hudson/", mail_address=task.email, node_name=node_name, shell="\n".join(['hg clone %s' % (j) for j in [i.path for i in task.code]]) + '\n' + task.command) else: message = dict(name=task.email_topic, start_time=task.runtime, url=request.url_root + "notice/hudson/", svn=task.svn, mail_address=task.email, node_name=node_name, shell="\n".join(['hg clone %s' % (j) for j in [i.path for i in task.code]]) + '\n' + task.command) hudson_job = hud.job_exists(task.name) if task.access == 100: if hudson_job: try: hud.reconfig_job(task.name, build(message)) task.hudson = 4 except HudsonException: hud.disable_job(task.name) task.hudson = 2 finally: db.session.add(task) db.session.commit() clear_cache() flash(u"Update {0} successfully!".format(task.name), "success") return redirect(form.next.data or url_for("task.showtask")) else: try: hud.create_job(task.name, build(message)) task.hudson = 4 except HudsonException: task.hudson = 2 finally: db.session.add(task) db.session.commit() clear_cache() flash(u"Update {0} successfully!".format(task.name), "success") return redirect(form.next.data or url_for("task.showtask")) else: try: hud.delete_job(task.name) except HudsonException: pass finally: task.hudson = 2 db.session.add(task) db.session.commit() clear_cache() db.engine.execute("delete from task_count where task_id=%s" % (task_id)) flash(u"Update {0} successfully!".format(task.name), "success") return redirect(form.next.data or url_for("task.showtask")) parents = ModuleType.query.get_parent() nodes = ModuleType.query.get_allsubmodule() return render_template('task/edittask.html', form=form, parents=parents, nodes=nodes, from_case=from_case, from_code=from_code)
def addtask(): from_case = [] if session.get(g.user.username): from_case = session.get(g.user.username) form = AddTaskForm(next=request.referrer) form.moduletype_id.choices = [(item.id, _(item.name)) for item in ModuleType.query. get_allsubmodule()] form.machine_id.choices = [(item.id, _(item.name)) for item in Machine.query. get_all_ok()] '''In order to facilitate the query name, not to repeat the database query''' query_dict = dict(form.machine_id.choices) if form.validate_on_submit(): task = Task() task.author_id = g.user.id form.populate_obj(task) case = [] '''Notice:request.form.getlist('case_test') or request.form.getlist('code_test') may be need to remove duplicate elements.''' for case_id in request.form.getlist('case_test'): case.append(Case.query.get_or_404(case_id)) code = [] for code_id in request.form.getlist('code_test'): code.append(Code.query.get_or_404(code_id)) task.case = case task.code = code task.parent_id = ModuleType.query.get_or_404(form.moduletype_id.data).parent_id '''Notice:If master hudson is not named master,please change master to your name.''' node_name = query_dict.get(form.machine_id.data, 'master') if task.svn: message = dict(name=task.email_topic, start_time=task.runtime, svn=[eval(i) for i in task.svn.split(';')], url=request.url_root + "notice/hudson/", mail_address=task.email, node_name=node_name, shell="\n".join(['hg clone %s' % (j) for j in [i.path for i in task.code]]) + '\n' + task.command) else: message = dict(name=task.email_topic, start_time=task.runtime, url=request.url_root + "notice/hudson/", svn=task.svn, mail_address=task.email, node_name=node_name, shell="\n".join(['hg clone %s' % (j) for j in [i.path for i in task.code]]) + '\n' + task.command) if task.access == 100: try: hud.create_job(task.name, build(message)) task.hudson = 4 db.session.add(task) db.session.commit() flash(u"Add {0} successfully!".format(task.name), "success") except HudsonException: task.hudson = 2 task.access = 300 db.session.add(task) db.session.commit() flash(u"Add {0} fail!".format(task.name), "fail") finally: clear_cache() return redirect(form.next.data or url_for("task.showtask")) else: task.hudson = 2 db.session.add(task) db.session.commit() clear_cache() return redirect(form.next.data or url_for("task.showtask")) parents = ModuleType.query.get_parent() nodes = ModuleType.query.get_allsubmodule() return render_template('task/task.html', form=form, parents=parents, nodes=nodes, from_case=from_case)
def hudson_to_task(JOB_NAME, BUILD_NUMBER, BUILD_ID): task = Task.query.get_by_name(JOB_NAME) if task: input = [] output = [] id = [] caseall_id = [] casefail_id = [] other = [] if request.method == 'POST' and request.headers.get("Referer") == 'izpautotest': #tmp1 = ['0','0','0'] #tmp_timing = time.strftime('%H:%M:%S',time.gmtime(tmp2-float(task.timing))) #tmp2 = time.mktime(tuple(int(i) for i in str(BUILD_NUMBER).replace('_','-').split('-') + tmp1)) try: tmp_timing = BUILD_NUMBER.replace('_', ' ')[0:10] + BUILD_NUMBER.replace('-', ':').replace('_', ' ')[10:] post_data = request.values.to_dict() taskcount = Taskcount() taskcount.task_id = task.id taskcount.case_all = len(task.case) if len(task.case) == len(eval(post_data.get('success'))): taskcount.fail_case = str(caseall_id) else: for name in task.case: case = Case.query.get_by_title(name) caseall_id.append(case.id) for i in caseall_id: if str(i) not in post_data.get('success'): casefail_id.append(i) taskcount.fail_case = str(casefail_id) taskcount.case_pass = post_data.get('case_pass') taskcount.case_fail = taskcount.case_all - eval(taskcount.case_pass) taskcount.result_path = post_data.get('result_path') taskcount.build_id = BUILD_ID taskcount.timing = tmp_timing task.timing = tmp_timing task.hudson = 4 name = task.name fail_num = taskcount.case_fail db.session.add(taskcount) db.session.add(task) db.session.commit() db.session.remove() clear_cache() if fail_num: subject = defaultconfig().MAIL_SUBJECT % (name, str(fail_num)) body = defaultconfig().MAIL_BODY % name mail_send(subject, body, defaultconfig().MAIL_RECEIVER) return 'OK' except: return abort(401) for case_title in task.case: case = Case.query.get_by_title(case_title) if case: if case.usecase_input: input.append(case.usecase_input) else: input.append('') if case.usecase_output: output.append(case.usecase_output) else: output.append('') if case.other: other.append(case.other) else: other.append('') id.append(case.id) if len(input) == len(output) == len(id): return jsonify(input=input, output=output, id=id, other=other) else: input = [] output = [] id = [] other = [] return jsonify(input=input, output=output, id=id, other=other) return 'fail'
def edittask(task_id): task = Task.query.get_or_404(task_id) task.permissions.edit.test(403) from_case = list() from_code = list() tmp_case = db.engine.execute( "select cases_id from task_case where task_id=%s" % (task_id)).fetchall() tmp_code = db.engine.execute( "select code_id from task_code where task_id=%s" % (task_id)).fetchall() if tmp_case: from_case = list(zip(*tmp_case)[0]) if tmp_code: from_code = list(zip(*tmp_code)[0]) form = EditTaskForm(task, next=request.referrer) form.moduletype_id.choices = [ (item.id, _(item.name)) for item in ModuleType.query.get_allsubmodule() ] form.machine_id.choices = [(item.id, _(item.name)) for item in Machine.query.get_all_ok()] '''In order to facilitate the query name, not to repeat the database query''' query_dict = dict(form.machine_id.choices) if form.validate_on_submit(): ''' if task.author_id != g.user.id: task.author_id = g.user.id ''' task.task_update_time = datetime.now() form.populate_obj(task) if task.parent_id != ModuleType.query.\ get_or_404(form.moduletype_id.data).parent_id: task.parent_id = ModuleType.query.\ get_or_404(form.moduletype_id.data).parent_id case = [] for case_id in request.form.getlist('case_test'): case.append(Case.query.get_or_404(case_id)) code = [] for code_id in request.form.getlist('code_test'): code.append(Code.query.get_or_404(code_id)) task.case = case task.code = code '''Notice:If master hudson is not named master,please change master to your name.''' node_name = query_dict.get(form.machine_id.data, 'master') if task.svn: message = dict( name=task.email_topic, start_time=task.runtime, svn=[eval(i) for i in task.svn.split(';')], url=request.url_root + "notice/hudson/", mail_address=task.email, node_name=node_name, shell="\n".join( ['hg clone %s' % (j) for j in [i.path for i in task.code]]) + '\n' + task.command) else: message = dict( name=task.email_topic, start_time=task.runtime, url=request.url_root + "notice/hudson/", svn=task.svn, mail_address=task.email, node_name=node_name, shell="\n".join( ['hg clone %s' % (j) for j in [i.path for i in task.code]]) + '\n' + task.command) hudson_job = hud.job_exists(task.name) if task.access == 100: if hudson_job: try: hud.reconfig_job(task.name, build(message)) task.hudson = 4 except HudsonException: hud.disable_job(task.name) task.hudson = 2 finally: db.session.add(task) db.session.commit() clear_cache() flash(u"Update {0} successfully!".format(task.name), "success") return redirect(form.next.data or url_for("task.showtask")) else: try: hud.create_job(task.name, build(message)) task.hudson = 4 except HudsonException: task.hudson = 2 finally: db.session.add(task) db.session.commit() clear_cache() flash(u"Update {0} successfully!".format(task.name), "success") return redirect(form.next.data or url_for("task.showtask")) else: try: hud.delete_job(task.name) except HudsonException: pass finally: task.hudson = 2 db.session.add(task) db.session.commit() clear_cache() db.engine.execute("delete from task_count where task_id=%s" % (task_id)) flash(u"Update {0} successfully!".format(task.name), "success") return redirect(form.next.data or url_for("task.showtask"))
parents = ModuleType.query.get_parent() nodes = ModuleType.query.get_allsubmodule() return render_template('case/case.html', form=form, parents=parents, nodes=nodes) @case.route("/<int:case_id>/delcase/", methods=("GET", "POST")) @auth.require(401) def delcase(case_id): case = Case.query.get_or_404(case_id) case.permissions.delete.test(403) db.session.delete(case) db.session.commit() clear_cache() flash(u"{0} has been deleted".format(case.title), "success") return redirect(request.referrer or url_for("case.showcase")) @case.route("/<int:case_id>/editcase/", methods=("GET", "POST")) @auth.require(401) def editcase(case_id): case = Case.query.get_or_404(case_id) case.permissions.edit.test(403) form = EditCaseForm(case, next=request.referrer) #print form.module_type.data form.module_type.choices = [ (item.id, _(item.name)) for item in ModuleType.query.get_allsubmodule() ]
def addtask(): from_case = [] if session.get(g.user.username): from_case = session.get(g.user.username) form = AddTaskForm(next=request.referrer) form.moduletype_id.choices = [ (item.id, _(item.name)) for item in ModuleType.query.get_allsubmodule() ] form.machine_id.choices = [(item.id, _(item.name)) for item in Machine.query.get_all_ok()] '''In order to facilitate the query name, not to repeat the database query''' query_dict = dict(form.machine_id.choices) if form.validate_on_submit(): task = Task() task.author_id = g.user.id form.populate_obj(task) case = [] '''Notice:request.form.getlist('case_test') or request.form.getlist('code_test') may be need to remove duplicate elements.''' for case_id in request.form.getlist('case_test'): case.append(Case.query.get_or_404(case_id)) code = [] for code_id in request.form.getlist('code_test'): code.append(Code.query.get_or_404(code_id)) task.case = case task.code = code task.parent_id = ModuleType.query.get_or_404( form.moduletype_id.data).parent_id '''Notice:If master hudson is not named master,please change master to your name.''' node_name = query_dict.get(form.machine_id.data, 'master') if task.svn: message = dict( name=task.email_topic, start_time=task.runtime, svn=[eval(i) for i in task.svn.split(';')], url=request.url_root + "notice/hudson/", mail_address=task.email, node_name=node_name, shell="\n".join( ['hg clone %s' % (j) for j in [i.path for i in task.code]]) + '\n' + task.command) else: message = dict( name=task.email_topic, start_time=task.runtime, url=request.url_root + "notice/hudson/", svn=task.svn, mail_address=task.email, node_name=node_name, shell="\n".join( ['hg clone %s' % (j) for j in [i.path for i in task.code]]) + '\n' + task.command) if task.access == 100: try: hud.create_job(task.name, build(message)) task.hudson = 4 db.session.add(task) db.session.commit() flash(u"Add {0} successfully!".format(task.name), "success") except HudsonException: task.hudson = 2 task.access = 300 db.session.add(task) db.session.commit() flash(u"Add {0} fail!".format(task.name), "fail") finally: clear_cache() return redirect(form.next.data or url_for("task.showtask")) else: task.hudson = 2 db.session.add(task) db.session.commit() clear_cache() return redirect(form.next.data or url_for("task.showtask"))