Esempio n. 1
0
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"))
Esempio n. 2
0
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"))
Esempio n. 3
0
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)
Esempio n. 4
0
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"))
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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"))
Esempio n. 8
0
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'
Esempio n. 9
0
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"))
Esempio n. 10
0
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"))
Esempio n. 11
0
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"))
Esempio n. 12
0
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)
Esempio n. 13
0
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"))
Esempio n. 14
0
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)
Esempio n. 15
0
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"))
Esempio n. 16
0
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"
Esempio n. 17
0
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"))
Esempio n. 18
0
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"))
Esempio n. 19
0
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"
Esempio n. 20
0
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"))
Esempio n. 21
0
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)
Esempio n. 22
0
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"))
Esempio n. 23
0
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)
Esempio n. 24
0
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)
Esempio n. 25
0
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)
Esempio n. 26
0
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)
Esempio n. 27
0
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)
Esempio n. 28
0
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)
Esempio n. 29
0
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)
Esempio n. 30
0
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)
Esempio n. 31
0
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)
Esempio n. 32
0
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'
Esempio n. 33
0
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"))
Esempio n. 34
0
    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()
    ]
Esempio n. 35
0
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"))