def index(): #projects = http_server_request('get', '/projects') settings = http_server_request('get', '/settings') projects = http_server_request('get', '/projects') return render_template('projects/index.html', projects=projects, settings=settings, title='projects')
def edit(): worker_ids = request.form['id'] worker_status = request.form['status'].lower() #worker_config = {'system': 'linux', # 'blender': 'local'} params = dict(id=worker_ids, status=worker_status) #'config': worker_config} http_server_request('post', '/managers', params) return redirect(url_for('managers.index'))
def index(): if request.method == 'POST': params = request.form http_server_request('post', '/settings', params) projects = http_server_request('get', '/projects') settings = http_server_request('get', '/settings') return render_template('settings/index.html', title='settings', settings=settings, projects=projects)
def edit(): worker_ids = request.form['id'] worker_status = request.form['status'].lower() #worker_config = {'system': 'linux', # 'blender': 'local'} params = dict(id=worker_ids, status=worker_status) #'config': worker_config} http_server_request('post', '/workers', params) return redirect(url_for('workers.index'))
def index_json(): workers = http_server_request('get', '/workers') workers_list = [] for key, val in workers.iteritems(): val['checkbox'] = '<input type="checkbox" value="' + str(val['id']) + ';' + str(val['manager_id']) + '"/>' workers_list.append({ "DT_RowId": "worker_" + str(val['id']), "checkbox": val['checkbox'], "hostname": key, "system": val['system'], "ip_address": val['ip_address'], "connection": val['connection'], "status": val['status'], "id": val['id'], "activity": val['activity'], "manager_id": val['manager_id'], }) # For debugging, if we add the pretty arg to the get request, we get a pretty # printed version of the workers_list if request.args.get('pretty'): print request.args.get('pretty') if request.args.get('pretty') == 'true': return jsonify(data=workers_list) # Default json return workers_list = {'data': workers_list} content = u"{0}".format(json.dumps(workers_list)) return Response(content, mimetype='application/json')
def edit(job_id): params = {} for f in request.form: params[f] = request.form[f] job = http_server_request('put', '/jobs/{0}'.format(job_id), params) return jsonify(job)
def view_json(job_id): """Light info to be retrieved via AJAX""" job = http_server_request('get', '/jobs/{0}'.format(job_id)) job['total_time'] = seconds_to_time(job['total_time']) job['average_time'] = seconds_to_time(job['average_time']) for task in job['tasks']: task['log'] = None return jsonify(job)
def jobs_update(): command = request.form["command"].lower() job_ids = request.form["id"] params = {"id": job_ids, "command": command} if command in ["start", "stop", "respawn", "reset", "archive"]: jobs = http_server_request("put", "/jobs", params) return jsonify(jobs) else: return "error", 400
def view_json(job_id): """Light info to be retrieved via AJAX""" job = http_server_request('get', '/jobs/{0}'.format(job_id)) job['total_time'] = seconds_to_time(job['total_time']) job['average_time'] = seconds_to_time(job['average_time']) job['thumbnail'] = 'http://%s/jobs/thumbnails/%s' % (FLAMENCO_SERVER, job_id) for task in job['tasks']: task['log'] = None return jsonify(job)
def jobs_update(): command = request.form['command'].lower() job_ids = request.form['id'] params = {'id': job_ids, 'command': command} if command in ['start', 'stop', 'respawn', 'reset']: jobs = http_server_request('put', '/jobs', params) return jsonify(jobs) else: return 'error', 400
def view_json(job_id): """Light info to be retrieved via AJAX""" job = http_server_request("get", "/jobs/{0}".format(job_id)) job["total_time"] = seconds_to_time(job["total_time"]) job["average_time"] = seconds_to_time(job["average_time"]) job["average_time_frame"] = seconds_to_time(job["average_time_frame"]) job["thumbnail"] = "http://%s/jobs/thumbnails/%s" % (FLAMENCO_SERVER, job_id) for task in job["tasks"]: task["log"] = None return jsonify(job)
def job(job_id): print '[Debug] job_id is %s' % job_id job = http_server_request('get', '/jobs/{0}'.format(job_id)) job['settings'] = json.loads(job['settings']) #Tasks job['thumbnail'] = 'http://%s/jobs/thumbnails/%s' % (BRENDER_SERVER, job_id) return render_template('jobs/view.html', job=job)
def jobs_update(): command = request.form['command'].lower() job_ids = request.form['id'] params = {'id': job_ids, 'command' : command} if command in ['start', 'stop', 'respawn', 'reset', 'archive']: jobs = http_server_request('put', '/jobs', params) return jsonify(jobs) else: return 'error', 400
def view_json(job_id): """Light info to be retrieved via AJAX""" job = http_server_request('get', '/jobs/{0}'.format(job_id)) job['total_time'] = seconds_to_time(job['total_time']) job['average_time'] = seconds_to_time(job['average_time']) job['average_time_frame'] = seconds_to_time(job['average_time_frame']) job['thumbnail'] = 'http://%s/jobs/thumbnails/%s' % (FLAMENCO_SERVER, job_id) for task in job['tasks']: task['log'] = None return jsonify(job)
def status(): try: server_status = check_connection() server_stats = http_server_request('get', '/stats') except: server_status = 'offline' server_stats = '' return render_template('settings/status.html', title='server status', server_stats=server_stats, server_status=server_status)
def jobs_browse(path): if len(path) > 0: path = os.path.join('/browse', path) else: path = "/browse" path_data = http_server_request('get', path) path_data_sorted = sorted(path_data['items_list'], key=lambda p: p[0]) return render_template('browse_modal.html', # items=path_data['items'], items_list=path_data_sorted, parent_folder=path_data['parent_path'])
def edit(): worker_ids = request.form['id'] worker_status = request.form['status'].lower() #worker_config = {'system': 'linux', # 'blender': 'local'} params = dict(id=worker_ids, status=worker_status) #'config': worker_config} r = http_server_request('post', '/workers', params) return jsonify(status=worker_status)
def add(): if request.method == 'POST': params = dict( name=request.form['name'], path_server=request.form['path_server'], path_linux=request.form['path_linux'], path_win=request.form['path_win'], path_osx=request.form['path_osx'], render_path_server=request.form['render_path_server'], render_path_linux=request.form['render_path_linux'], render_path_win=request.form['render_path_win'], render_path_osx=request.form['render_path_osx'], is_active=request.form['set_project_option']) http_server_request('post', '/projects', params) return redirect(url_for('projects.index')) else: projects = http_server_request('get', '/projects') settings = http_server_request('get', '/settings') return render_template('projects/add_modal.html', settings=settings, projects=projects)
def jobs_browse(path): if len(path) > 0: path = os.path.join('/browse', path) else: path = "/browse" path_data = http_server_request('get', path) path_data_sorted = sorted(path_data['items_list'], key=lambda p: p[0]) return render_template( 'browse_modal.html', # items=path_data['items'], items_list=path_data_sorted, parent_folder=path_data['parent_path'])
def add(): if request.method == 'POST': job_values = { 'project_id': request.form['project_id'], 'job_name': request.form['job_name'], 'frame_start': request.form['frame_start'], 'frame_end': request.form['frame_end'], 'chunk_size': request.form['chunk_size'], 'current_frame': request.form['frame_start'], 'filepath': request.form['filepath'], 'render_settings': request.form['render_settings'], 'format' : request.form['format'], 'status': 'stopped', 'priority': 10, 'managers' : request.form.getlist('managers'), 'job_type' : request.form['job_type'], 'owner': 'fsiddi' } http_server_request('post', '/jobs', job_values) return redirect(url_for('jobs.index')) else: render_settings = http_server_request('get', '/settings/render') projects = http_server_request('get', '/projects') settings = http_server_request('get', '/settings') managers = http_server_request('get', '/managers') return render_template('jobs/add_modal.html', render_settings=render_settings, settings=settings, projects=projects, managers=filter(lambda m : m['connection'] == 'online', managers.values()))
def add(): if request.method == "POST": job_values = { "project_id": request.form["project_id"], "job_name": request.form["job_name"], "frame_start": request.form["frame_start"], "frame_end": request.form["frame_end"], "chunk_size": request.form["chunk_size"], "current_frame": request.form["frame_start"], "filepath": request.form["filepath"], "render_settings": request.form["render_settings"], "format": request.form["format"], "status": "waiting", "priority": 10, "managers": request.form.getlist("managers"), "job_type": request.form["job_type"], "owner": "fsiddi", } http_server_request("post", "/jobs", job_values) return redirect(url_for("jobs.index")) else: render_settings = http_server_request("get", "/settings/render") projects = http_server_request("get", "/projects") settings = http_server_request("get", "/settings") managers = http_server_request("get", "/managers") return render_template( "jobs/add_modal.html", render_settings=render_settings, settings=settings, projects=projects, managers=filter(lambda m: m["connection"] == "online", managers.values()), )
def add(): if request.method == 'POST': job_values = { 'project_id': request.form['project_id'], 'job_name': request.form['job_name'], 'frame_start': request.form['frame_start'], 'frame_end': request.form['frame_end'], 'chunk_size': request.form['chunk_size'], 'current_frame': request.form['frame_start'], 'filepath': request.form['filepath'], 'render_settings': request.form['render_settings'], 'format': request.form['format'], 'status': 'waiting', 'priority': 10, 'managers': request.form.getlist('managers'), 'job_type': request.form['job_type'], 'owner': 'fsiddi' } http_server_request('post', '/jobs', job_values) return redirect(url_for('jobs.index')) else: render_settings = http_server_request('get', '/settings/render') projects = http_server_request('get', '/projects') settings = http_server_request('get', '/settings') managers = http_server_request('get', '/managers') return render_template('jobs/add_modal.html', render_settings=render_settings, settings=settings, projects=projects, managers=filter( lambda m: m['connection'] == 'online', managers.values()))
def jobs_browse(path): if len(path) > 0: path = os.path.join("/browse", path) else: path = "/browse" path_data = http_server_request("get", path) path_data_sorted = sorted(path_data["items_list"], key=lambda p: p[0]) return render_template( "browse_modal.html", # items=path_data['items'], items_list=path_data_sorted, parent_folder=path_data["parent_path"], )
def index(): jobs = http_server_request('get', '/jobs') jobs_list = [] for key, val in jobs.iteritems(): remaining_time = val['remaining_time'] if not remaining_time: remaining_time = '-' else: remaining_time = seconds_to_time(remaining_time) average_time = val['average_time'] if not average_time: average_time = '-' else: average_time = seconds_to_time(average_time) total_time = val['total_time'] if not total_time: total_time = '-' else: total_time = seconds_to_time(total_time) job_time = val['job_time'] if job_time: total_time = "{0} ({1})".format(total_time, seconds_to_time(job_time)) val['checkbox'] = '<input type="checkbox" value="' + key + '" />' jobs_list.append({ "DT_RowId" : "job_" + str(key), "0" : val['checkbox'], "1" : key, "2" : 'http://{0}/jobs/thumbnails/{1}s'.format(BRENDER_SERVER, key), "3" : val['job_name'], "4" : val['percentage_done'], "5" : remaining_time, "6" : average_time, "7" : total_time, "8" : val['activity'], "9" : val['status'], "10" : None, "11" : val['creation_date'], "12" : val['priority'] }) jobs_list = sorted(jobs_list, key=lambda x: x['1']) entries = json.dumps(jobs_list) return render_template('jobs/index.html', entries=entries, title='jobs')
def update(project_id): params = dict( path_server=request.form['path_server'], path_linux=request.form['path_linux'], path_win=request.form['path_win'], path_osx=request.form['path_osx'], render_path_server=request.form['render_path_server'], render_path_linux=request.form['render_path_linux'], render_path_win=request.form['render_path_win'], render_path_osx=request.form['render_path_osx']) projects = http_server_request('put', '/projects/' + project_id, params) print projects # http_server_request('get', '/projects/update', params) return redirect(url_for('projects.index'))
def tasks_index(): tasks = http_server_request('get', '/tasks') tasks_list = [] for key, val in tasks.iteritems(): val['checkbox'] = '<input type="checkbox" value="' + key + '" />' tasks_list.append({ "DT_RowId": "worker_" + str(key), "0": val['checkbox'], "1": key, "2": val['percentage_done'], "3": val['priority'], "4": val['status'] }) #print(v) entries = json.dumps(tasks_list) return render_template('tasks.html', entries=entries, title='tasks')
def view_json(task_id): task = http_server_request('get', '/tasks/{0}'.format(task_id)) # We check if we are asking to download the full log for the task is_log_download = request.args.get('log_dl') if is_log_download and task['log']: log = task['log'] response = make_response(log) # Set the right header for the response to be downloaded, instead # of just printed on the browser filename_string = "attachment; filename=log_task_{0}.txt".format(task['id']) response.headers["Content-Disposition"] = filename_string return response elif task['log']: # If there is a log but we are not downloadig it, we trim it and append # the link to dowload the whole file log_trimmed = task['log'][-256:] log_trimmed = "{0} <a href=\"{1}\">Download</a>".format(log_trimmed, url_for('tasks.view_json', task_id=task['id'], log_dl=True)) task['log'] = log_trimmed return jsonify(task)
def index(): workers = http_server_request('get', '/workers') workers_list = [] for key, val in workers.iteritems(): val['checkbox'] = '<input type="checkbox" value="' + str(val['id']) + ';' + str(val['manager_id']) + '"/>' workers_list.append({ "DT_RowId": "worker_" + str(val['id']), "0": val['checkbox'], "1": key, "2": val['system'], "3": val['ip_address'], "4": val['connection'], "5": val['status'], "6": val['id'], "7": val['activity'], "8": val['manager_id'], }) entries = json.dumps(workers_list) return render_template('workers/index.html', entries=entries, title='workers')
def index(): managers = http_server_request('get', '/managers') managers_list = [] for key in managers: val = managers[key] val['checkbox'] = '<input type="checkbox" value="' \ + str(val['id']) + ';' + str(val['id']) + '"/>' managers_list.append({ "DT_RowId": "manager_" + str(val['id']), "0": val['checkbox'], "1": key, "2": val['host'], "3": val['ip_address'], "4": val['connection'], "5": val['id'], }) entries = json.dumps(managers_list) return render_template('managers/index.html', entries=entries, title='managers')
def view_json(task_id): task = http_server_request('get', '/tasks/{0}'.format(task_id)) # We check if we are asking to download the full log for the task is_log_download = request.args.get('log_dl') if is_log_download and task['log']: log = task['log'] response = make_response(log) # Set the right header for the response to be downloaded, instead # of just printed on the browser filename_string = "attachment; filename=log_task_{0}.txt".format(task['id']) response.headers["Content-Disposition"] = filename_string return response elif task['log']: # If there is a log but we are not downloadig it, we trim it and append # the link to dowload the whole file log_trimmed = task['log'][-256:] log_trimmed = "{0} <a href=\"{1}\">Download</a>".format( log_trimmed, url_for('tasks.view_json', task_id=task['id'], log_dl=True)) task['log'] = log_trimmed return jsonify(task)
def index(): workers = http_server_request('get', '/workers') workers_list = [] for key, val in workers.iteritems(): val['checkbox'] = '<input type="checkbox" value="' + str( val['id']) + ';' + str(val['manager_id']) + '"/>' workers_list.append({ "DT_RowId": "worker_" + str(val['id']), "0": val['checkbox'], "1": key, "2": val['system'], "3": val['ip_address'], "4": val['connection'], "5": val['status'], "6": val['id'], "7": val['activity'], }) entries = json.dumps(workers_list) return render_template('workers/index.html', entries=entries, title='workers')
def job(job_id): job = http_server_request('get', '/jobs/{0}'.format(job_id)) #Tasks job['thumbnail'] = 'http://%s/jobs/thumbnails/%s' % (FLAMENCO_SERVER, job_id) return render_template('jobs/view.html', job=job)
def view(worker_id): worker = http_server_request('get', '/workers/{0}'.format(worker_id)) return render_template('workers/view.html', worker=worker)
def delete(project_id): http_server_request('delete', '/projects/' + project_id) #http_server_request('get', '/projects/delete/' + project_id) return redirect(url_for('projects.index'))
def view_json(job_id): job = http_server_request('get', '/jobs/{0}'.format(job_id)) return jsonify(job)
def jobs_delete(): job_ids = request.form['id'] params = {'id': job_ids} jobs = http_server_request('post', '/jobs/delete', params) return 'done'
def view(manager_id): manager = http_server_request('get', '/managers/{0}'.format(manager_id)) return render_template('managers/view.html', manager=manager)
def render(): render_settings = http_server_request('get', '/settings/render') return render_template('settings/render.html', title='render settings', render_settings=render_settings)
def index_json(): """Generate DataTable-ready JSON with all non archived jobs. Accepts a 'pretty' argument that will pretty print the list. """ # Check if we are requesting for a specific status (e.g. archived) if request.args.get('status'): jobs_route = "/jobs?status={0}".format(request.args.get('status')) else: jobs_route = '/jobs' jobs = http_server_request('get', jobs_route) jobs_list = [] for key, val in jobs.iteritems(): remaining_time = val['time_remaining'] if not remaining_time: remaining_time = '-' else: remaining_time = seconds_to_time(remaining_time) average_time = val['time_average'] if not average_time: average_time = '-' else: average_time = seconds_to_time(average_time) total_time = val['time_total'] if not total_time: total_time = '-' else: total_time = seconds_to_time(total_time) job_time = None if job_time: total_time = "{0} ({1})".format(total_time, seconds_to_time(job_time)) time_elapsed = val['time_elapsed'] if time_elapsed == None: time_elapsed = '' else: time_elapsed = seconds_to_time(time_elapsed) val['checkbox'] = '<input type="checkbox" value="' + key + '" />' jobs_list.append({ 'DT_RowId': 'job_' + str(key), 'checkbox': val['checkbox'], 'job_id': key, 'thumbnail': 'http://{0}/jobs/thumbnails/{1}s'.format(FLAMENCO_SERVER, key), 'name': val['job_name'], 'percentage_done': val['percentage_done'], 'time_remaining': remaining_time, 'time_average': average_time, 'time_total': total_time, 'status': val['status'], 'date_creation': val['creation_date'], 'date_edit': val['date_edit'], 'priority': val['priority'], 'manager': val['manager'], 'time_elapsed': time_elapsed, 'tasks_status': val['tasks_status'], 'username': val['username'] }) #jobs_list = sorted(jobs_list, key=lambda x: x['1']) # For debugging, if we add the pretty arg to the get request, we get a pretty # printed version of the jobs_list if request.args.get('pretty'): if request.args.get('pretty') == 'true': return jsonify(data=jobs_list) # Default json return jobs_list_dict = {'data': jobs_list} content = u"{0}".format(json.dumps(jobs_list_dict)) return Response(content, mimetype='application/json')
def index(): jobs = http_server_request('get', '/jobs') jobs_list = [] def seconds_to_time(seconds): return str(datetime.timedelta(seconds=seconds)) for key, val in jobs.iteritems(): remaining_time = val['remaining_time'] if not remaining_time: remaining_time = '-' else: remaining_time = seconds_to_time(remaining_time) average_time = val['average_time'] if not average_time: average_time = '-' else: average_time = seconds_to_time(average_time) total_time = val['total_time'] if not total_time: total_time = '-' else: total_time = seconds_to_time(total_time) job_time = val['job_time'] if job_time: total_time = "{0} ({1})".format(total_time, seconds_to_time(job_time)) val['checkbox'] = '<input type="checkbox" value="' + key + '" />' jobs_list.append({ "DT_RowId": "job_" + str(key), "0": val['checkbox'], "1": key, "2": 'http://{0}/jobs/thumbnails/{1}s'.format(BRENDER_SERVER, key), "3": val['job_name'], "4": val['percentage_done'], "5": remaining_time, "6": total_time, "7": average_time, "8": val['activity'], "9": val['status'], "10": None }) jobs_list = sorted(jobs_list, key=lambda x: x['1']) entries = json.dumps(jobs_list) return render_template('jobs/index.html', entries=entries, title='jobs')
def index_json(): """Generate DataTable-ready JSON with all non archived jobs. Accepts a 'pretty' argument that will pretty print the list. """ # Check if we are requesting for a specific status (e.g. archived) if request.args.get('status'): jobs_route = "/jobs?status={0}".format(request.args.get('status')) else: jobs_route = '/jobs' jobs = http_server_request('get', jobs_route) jobs_list = [] for key, val in jobs.iteritems(): remaining_time = val['time_remaining'] if not remaining_time: remaining_time = '-' else: remaining_time = seconds_to_time(remaining_time) average_time = val['time_average'] if not average_time: average_time = '-' else: average_time = seconds_to_time(average_time) total_time = val['time_total'] if not total_time: total_time = '-' else: total_time = seconds_to_time(total_time) job_time = None if job_time: total_time = "{0} ({1})".format(total_time, seconds_to_time(job_time)) time_elapsed = val['time_elapsed'] if time_elapsed == None: time_elapsed = '' else: time_elapsed = seconds_to_time(time_elapsed) val['checkbox'] = '<input type="checkbox" value="' + key + '" />' jobs_list.append({ 'DT_RowId' : 'job_' + str(key), 'checkbox' : val['checkbox'], 'job_id' : key, 'thumbnail' : 'http://{0}/jobs/thumbnails/{1}s'.format(FLAMENCO_SERVER, key), 'name' : val['job_name'], 'percentage_done' : val['percentage_done'], 'time_remaining' : remaining_time, 'time_average' : average_time, 'time_total' : total_time, 'status' : val['status'], 'date_creation' : val['creation_date'], 'priority' : val['priority'], 'manager': val['manager'], 'time_elapsed': time_elapsed }) #jobs_list = sorted(jobs_list, key=lambda x: x['1']) # For debugging, if we add the pretty arg to the get request, we get a pretty # printed version of the jobs_list if request.args.get('pretty'): if request.args.get('pretty') == 'true': return jsonify(data=jobs_list) # Default json return jobs_list_dict = {'data': jobs_list} content = u"{0}".format(json.dumps(jobs_list_dict)) return Response(content, mimetype='application/json')
def edit_status(task_id): params = {"status": request.form['status']} task = http_server_request('put', '/tasks/{0}/status'.format(task_id), params) return task