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) )
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) )
def index(request) : title = html.title( [ _('Index'), 'Ganymede' ] ) return render_to_response( 'index.html', { 'title' : title }, context_instance=RequestContext(request) )
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) )
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) )
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) )
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) )
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) )
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) )
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) )
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) )
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) )