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 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 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"))