コード例 #1
0
ファイル: job.py プロジェクト: skliarpawlo/ganymede
def list_jobs(request) :
    title = html.title( [ _('Jobs'), 'Ganymede' ] )

    jobs = []
    for job in db.session.query(Job).all() :
        try :
            last_task = db.session.query(Task).\
             filter(Task.job_id == job.job_id).\
             order_by(Task.add_time.desc()).limit(1).one()
        except :
            last_task = None

        jobs.append( {
            "job_id" : job.job_id,
            "name" : job.name,
            "repo" : job.repo,
            "branch" : job.branch,
            "whose" : job.whose if not job.whose is None else "-",
            "last_status" :  _( "Not executed" ) if (last_task is None) else last_task.status.capitalize(),
            "last_task_id" : None if (last_task is None) else last_task.task_id
        } )
    return render_to_response( 'job/list/list.html', {
        'title' : title,
        'jobs' : jobs
    }, context_instance=RequestContext(request) )
コード例 #2
0
ファイル: tasks.py プロジェクト: skliarpawlo/ganymede
def system_state(request) :
    title = html.title( [ _('System state'), 'Ganymede' ] )

    tasks = []
    for task in providers.tasks( request.GET ) :
        t = {}
        t["id"] = task.task_id
        t["job_name"] = task.job.name
        t["job_id"] = task.job.job_id
        t["status"] = task.status.capitalize()
        t["add_time"] = task.add_time
        t["whose"] = task.whose if not task.whose is None else "-"
        if task.total_time < 0 :
            t["total_time"] = "-"
        else :
            t["total_time"] = datetime.timedelta( seconds=task.total_time )
        tasks.append(t)
    if request.is_ajax() :
        return render_to_response(
            'job/state/table.html',
            {'tasks':tasks},
            context_instance=RequestContext(request)
        )
    else :
        return render_to_response(
            'job/state/state.html',
            {'tasks':tasks, 'title':title},
            context_instance=RequestContext(request)
        )
コード例 #3
0
ファイル: tests.py プロジェクト: skliarpawlo/ganymede
def index(request) :
    title = html.title( [ _('Index'), 'Ganymede' ] )
    return render_to_response(
        'index.html',
        { 'title' : title },
        context_instance=RequestContext(request)
    )
コード例 #4
0
ファイル: modules.py プロジェクト: skliarpawlo/ganymede
def list_modules( request ) :
    title = html.title( [ _('Modules'), 'Ganymede' ] )
    modules = gather_modules_info()
    return render_to_response(
        'modules/list.html',
        { "modules" : modules, 'title' : title },
        context_instance=RequestContext(request)
    )
コード例 #5
0
ファイル: tests.py プロジェクト: skliarpawlo/ganymede
def list_tests(request) :
    title = html.title( [ _('Tests'), 'Ganymede' ] )
    stored_tests = gather_tests_info()
    return render_to_response(
        'test/list/tests_list.html',
        { "tests" : stored_tests, 'title' : title },
        context_instance=RequestContext(request)
    )
コード例 #6
0
ファイル: tasks.py プロジェクト: skliarpawlo/ganymede
def log( request, task_id ) :
    title = html.title( [ _('Task log') + " #" + str(task_id), _('Tasks'), 'Ganymede' ] )

    task_model = db.session.query( Task ).filter( Task.task_id == task_id ).one()
    task = {}
    task["id"] = task_model.task_id
    task["name"] = task_model.job.name
    task["branch"] = task_model.job.branch
    task["repo"] = task_model.job.repo
    return render_to_response(
        'job/state/realtime_log.html',
        {'task':task, 'title':title},
        context_instance=RequestContext(request)
    )
コード例 #7
0
ファイル: tests.py プロジェクト: skliarpawlo/ganymede
def update_test(request, test_id) :
    title = html.title( [ _('Update test') + " #" + str(test_id), _('Tests'), 'Ganymede' ] )

    test_id = int(test_id)
    if request.method == "POST" :
        err = verify_test( test_id = test_id, code = request.POST['code'] )
        if len(err) == 0 :
            db.session\
            .query(models.StoredTest)\
            .filter( models.StoredTest.test_id == test_id )\
            .update( {
                "code" : request.POST['code'].encode('utf-8'),
                "status" : request.POST['status'].encode('utf-8')
            } )

            tags = json_to_tags( request.POST['tags'] )
            test = db.session.query(models.StoredTest).get( test_id )
            test.tags = tags

            json_resp = json.dumps( { "status" : "ok" } )
            return HttpResponse(json_resp, mimetype="application/json")
        else :
            json_resp = json.dumps( { "status" : "error", "content" : err } )
            return HttpResponse(json_resp, mimetype="application/json")

    else :
        test_model = db.session\
        .query( models.StoredTest )\
        .filter( models.StoredTest.test_id == test_id )\
        .one()
        test = {}
        test["id"] = test_id
        test["name"] = tests_config.all_tests()[test_id].__doc__
        test["code"] = test_model.code
        test["status"] = test_model.status
        test["tags"] = map( lambda tag : tag.value, test_model.tags )

        return render_to_response(
            "test/update/update_test.html",
            {"test":test,'title' : title},
            context_instance=RequestContext(request)
        )
コード例 #8
0
ファイル: job.py プロジェクト: skliarpawlo/ganymede
def add_job(request) :
    title = html.title([ _('Add job'), _('Jobs'), 'Ganymede' ])
    request.page = "job.add"

    if request.method == 'POST' :
        name = request.POST[ 'name' ]
        repo = request.POST[ 'repo' ]
        branch = request.POST[ 'branch' ]
        users = request.POST[ 'users' ]
        deploy = request.POST[ 'deploy' ]
        github = request.POST[ 'github' ]
        job_tests = json_to_tests(request.POST[ 'tests' ])
        whose = request.user.username
        job = Job(
            name=name, repo=repo,
            branch=branch, tests=job_tests,
            users=users, deploy=deploy,
            whose=whose, github=github
        )

        job.envs = json_to_envs( request.POST[ 'envs' ] )

        db.session.add(job)

        for env in job.envs :
            db.session.add( env )

        json_resp = json.dumps( { "status" : "ok" } )
        return HttpResponse(json_resp, mimetype="application/json")
    else :
        tests_data = tests.gather_tests_info()
        users_data = fetch_users_info()
        return render_to_response( 'job/add/add_job.html', {
            'title' : title,
            'tests' : tests_data,
            'users' : users_data,
            'repos' : [],
            'branches' : ['develop', 't-kz']
        }, context_instance=RequestContext(request) )
コード例 #9
0
ファイル: modules.py プロジェクト: skliarpawlo/ganymede
def update_module(request, module_id) :

    title = html.title( [ _('Update module'), _('Modules'), 'Ganymede' ] )
    module = db.session.query( models.Module ).get( module_id )

    if request.method == 'POST' :
        err = verify_module( module_id=None, code=request.POST['code'] )
        if len(err) == 0 :
            module.name = request.POST['name']
            module.code = request.POST['code']
            module.path = request.POST['path']

            json_resp = json.dumps( { "status" : "ok" } )
            return HttpResponse(json_resp, mimetype="application/json")
        else :
            json_resp = json.dumps( { "status" : "error", "content" : err } )
            return HttpResponse(json_resp, mimetype="application/json")
    else :
        return render_to_response(
            'modules/update.html',
            { 'title' : title, 'module' : module },
            context_instance=RequestContext(request)
        )
コード例 #10
0
ファイル: modules.py プロジェクト: skliarpawlo/ganymede
def add_module(request) :

    title = html.title( [ _('Add module'), _('Modules'), 'Ganymede' ] )

    if request.method == 'POST' :
        err = verify_module( module_id=None, code=request.POST['code'] )
        if len(err) == 0 :
            name = request.POST['name']
            code = request.POST['code']
            path = request.POST['path']
            test = models.Module( name=name, path=path, code=code )
            db.session.add( test )
            json_resp = json.dumps( { "status" : "ok" } )
            return HttpResponse(json_resp, mimetype="application/json")
        else :
            json_resp = json.dumps( { "status" : "error", "content" : err } )
            return HttpResponse(json_resp, mimetype="application/json")
    else :
        return render_to_response(
            'modules/add.html',
            { 'title' : title },
            context_instance=RequestContext(request)
        )
コード例 #11
0
ファイル: tests.py プロジェクト: skliarpawlo/ganymede
def add_test(request) :

    title = html.title( [ _('Add test'), _('Tests'), 'Ganymede' ] )

    if request.method == 'POST' :
        err = verify_test( test_id=None, code=request.POST['code'] )
        if len(err) == 0 :
            code = request.POST['code']
            status = request.POST['status']
            whose = request.user.username
            tags = json_to_tags( request.POST['tags'] )
            test = models.StoredTest( code=code, status=status, whose=whose, tags=tags )
            db.session.add( test )
            json_resp = json.dumps( { "status" : "ok" } )
            return HttpResponse(json_resp, mimetype="application/json")
        else :
            json_resp = json.dumps( { "status" : "error", "content" : err } )
            return HttpResponse(json_resp, mimetype="application/json")
    else :
        return render_to_response(
            'test/add/add_test.html',
            { 'title' : title },
            context_instance=RequestContext(request)
        )
コード例 #12
0
ファイル: job.py プロジェクト: skliarpawlo/ganymede
def update_job(request, job_id) :
    title = html.title( [ _('Update job') + " #" + str(job_id), _('Jobs'), 'Ganymede' ] )

    if request.method == 'POST' :
        job = db.session.query(Job).filter( Job.job_id == int(job_id) ).one()
        job.name = request.POST[ 'name' ]
        job.repo = request.POST[ 'repo' ]
        job.branch = request.POST[ 'branch' ]
        job.exec_time = request.POST[ 'exec_time' ] if request.POST[ 'exec_time' ] != "" else None
        job.tests = json_to_tests( request.POST[ 'tests' ] )
        job.users = request.POST[ 'users' ]
        job.deploy = request.POST[ 'deploy' ] if not request.POST[ 'deploy' ] == u'' else None
        job.github = request.POST[ 'github' ]

        for env in job.envs :
            db.session.delete( env )

        db.session.commit()

        new_envs = json_to_envs( request.POST[ 'envs' ], job.job_id )

        for env in new_envs :
            job.envs.append( env )

        try :
            db.session.commit()
            json_resp = json.dumps( { "status" : "ok" } )
        except Exception as e :
            db.session.rollback()
            json_resp = json.dumps( { "status" : "error", "content" : str(e) } )

        return HttpResponse(json_resp, mimetype="application/json")
    else :
        job_model = db.session.query( Job ).filter( Job.job_id == job_id ).one()
        job = {
            "job_id" : job_model.job_id,
            "name" : job_model.name,
            "repo" : job_model.repo,
            "branch" : job_model.branch,
            "envs" : job_model.envs,
            "exec_time" : job_model.exec_time.strftime("%H:%M") if not job_model.exec_time is None else "",
            "tests" : job_model.tests,
            "deploy" : job_model.deploy,
            "github" : job_model.github
        }

        tests_ids = []
        for x in job_model.tests :
            tests_ids.append( x.test_id )

        tests_data = tests.gather_tests_info( tests_ids )
        users_data = fetch_users_info( job_model )

        return render_to_response(
            'job/update/update_job.html', {
            'title' : title,
            'job' : job,
            'users' : users_data,
            'tests' : tests_data,
            'repos' : [],
            'branches' : ['develop', 't-kz']
        }, context_instance=RequestContext(request) )