def doeditsimfile(request, simfile_id): # Open up the file in an editor: sim_file = SimFile.get_tracked_sims(id=simfile_id) cwd = os.getcwd() os.chdir(os.path.split(sim_file.full_filename)[0]) data_dict = {'full_filename': sim_file.full_filename} #cmds = MReOrgConfig.get_ns().get('drop_into_editor_cmds', ['xterm &']) #cmds = MReOrgConfig.get_ns().get('drop_into_editor_cmds', ['xterm &']) #cmds = MReOrgConfig.get_ns().get('drop_into_editor_cmds', ['xterm &']) cmds = MReOrgConfig.config['Settings']['Curate']['drop_into_editor_cmds'] for cxt_data in cmds: t = string.Template(cxt_data).substitute(**data_dict) os.system(t) os.chdir(cwd) # Return to the previous page: referer = request.META.get('HTTP_REFERER', None) if referer is None: return HttpResponseRedirect('/') try: redirect_to = urlsplit(referer, 'http', False)[2] return HttpResponseRedirect(redirect_to) except IndexError: return HttpResponseRedirect('/')
def view_tracking(request): cxt_data = {'src_directories': SourceSimDir.objects.all(), 'untracked_simfiles': SimFile.get_untracked_sims(), 'simfiles': SimFile.get_tracked_sims()} csrf_context = RequestContext(request, cxt_data, [config_processor]) return render_to_response('tracking.html', csrf_context)
def overview_delete_simfile(_request, simfile_id): try: sim_file = SimFile.get_tracked_sims(id=simfile_id) sim_file.delete() except: pass return simplejson.dumps({})
def refreshsimlist(_request): assert False, 'Is this used?' ensure_config() runconfig = _request.session['current_runconfig'] states = {} for simfile in SimFile.get_tracked_sims(): states[simfile.id] = simfile.get_status() return simplejson.dumps({'sim_file_states': states})
def overview_resubmit_simfile(_request, simfile_id): try: sim_file = SimFile.get_tracked_sims(id=simfile_id) except: return simplejson.dumps({}) # Existing simulation object if not sim_file.simqueueentry_set.count(): SimQueueEntry.create(sim_file=sim_file, runconfig=_request.session["current_runconfig"]) return simplejson.dumps({})
def overview_resubmit_simfile(_request, simfile_id): try: sim_file = SimFile.get_tracked_sims(id=simfile_id) except: return simplejson.dumps({}) # Existing simulation object if not sim_file.simqueueentry_set.count(): SimQueueEntry.create(sim_file=sim_file, runconfig=_request.session['current_runconfig']) return simplejson.dumps({})
def view_overview(request): ensure_config(request) sims =[sim for sim in SimFile.get_tracked_sims() if request.session['current_filegroup'].contains_simfile(sim) ] return render_to_response( 'overview.html', RequestContext(request, { 'simfiles': sims }, [config_processor] ) )
def overview_resubmit_simfile_if_failure(_request, simfile_id): try: sim_file = SimFile.get_tracked_sims(id=simfile_id) except: return simplejson.dumps({}) if sim_file.get_status(runconfig=_request.session['current_runconfig']) == SimRunStatus.Success: return simplejson.dumps({}) if not sim_file.simqueueentry_set.count(): SimQueueEntry.create(sim_file=sim_file, runconfig=_request.session['current_runconfig']) return simplejson.dumps({})
def overview_resubmit_simfile_if_failure(_request, simfile_id): try: sim_file = SimFile.get_tracked_sims(id=simfile_id) except: return simplejson.dumps({}) if sim_file.get_status() == SimRunStatus.Sucess: return simplejson.dumps({}) if not sim_file.simqueueentry_set.count(): SimQueueEntry.create(sim_file=sim_file, runconfig=_request.session['current_runconfig']) return simplejson.dumps({})
def overview_toggle_simfile_for_resubmit(_request, simfile_id): ensure_config() try: sim_file = SimFile.get_tracked_sims(id=simfile_id) except: return simplejson.dumps({}) # Existing simulation object if sim_file.simqueueentry_set.count(): sim_file.simqueueentry_set.all().delete() else: SimQueueEntry.create(sim_file=sim_file, runconfig=_request.session['current_runconfig']) return simplejson.dumps({})
def view_simulation_failures(request): ensure_config(request) runconfig= request.session['current_runconfig'] simfiles = build_proxy_for_sim_files(SimFile.get_tracked_sims(), runconfig=runconfig) cxt_data = { 'failed_simulations': [fo for fo in simfiles if fo.get_status() == SimRunStatus.UnhandledException], 'timeout_simulations': [fo for fo in simfiles if fo.get_status() == SimRunStatus.TimeOut], 'nonzero_exitcode_simulations': [fo for fo in simfiles if fo.get_status() == SimRunStatus.NonZeroExitCode], 'changed_simulations': [fo for fo in simfiles if fo.get_status() == SimRunStatus.FileChanged], 'notrun_simulations': [fo for fo in simfiles if fo.get_status() == SimRunStatus.NeverBeenRun], } csrf_context = RequestContext(request, cxt_data, [config_processor]) return render_to_response('view_simulation_failures.html', csrf_context)
def update_queue(_request, action): print 'Action', action tracked_sim_files = SimFile.get_tracked_sims() print 'Tracked sim files:', len(tracked_sim_files) runconfig=_request.session['current_runconfig'] if action == 'add-all': with transaction.commit_on_success(): for simfile in tracked_sim_files: if simfile.simqueueentry_set.count() > 0: continue SimQueueEntry.create( sim_file=simfile, runconfig=runconfig) return simplejson.dumps({}) if action == 'clear-all': SimQueueEntry.objects.all() .filter(status = SimQueueEntryState.Waiting).delete() return simplejson.dumps({}) # TODO! Move functionality into here! if action == "add-all-failures": with transaction.commit_on_success(): for simfile in tracked_sim_files: if simfile.simqueueentry_set.count() > 0: continue if simfile.get_status(runconfig=runconfig) not in (SimRunStatus.TimeOut, SimRunStatus.UnhandledException, SimRunStatus.NonZeroExitCode, SimRunStatus.FileChanged,SimRunStatus.NeverBeenRun): continue SimQueueEntry.create( sim_file=simfile, runconfig=_request.session['current_runconfig']) return simplejson.dumps({}) if action == "add-all-failures-not-timeout": with transaction.commit_on_success(): for simfile in tracked_sim_files: if simfile.simqueueentry_set.count() > 0: continue if simfile.get_status(runconfig=runconfig) not in (SimRunStatus.UnhandledException, SimRunStatus.NonZeroExitCode, SimRunStatus.FileChanged,SimRunStatus.NeverBeenRun): continue SimQueueEntry.create( sim_file=simfile, runconfig=_request.session['current_runconfig']) return simplejson.dumps({}) else: assert False, 'Unhandled aciton: %s'% action print 'Action', action return simplejson.dumps({})
def do_queue_add_sims(request): if not request.method == 'POST': return HttpResponseRedirect('/viewsimulationqueue') print 'Queuing Sims:' print request.POST r = re.compile(r"""simid_(?P<id>\d+)""", re.VERBOSE) sim_id_matches = [r.match(k) for k in request.POST] sim_ids = [int(m.groupdict()['id']) for m in sim_id_matches if m] for simfile_id in sim_ids: sim_file = SimFile.get_tracked_sims(id = simfile_id) qe = SimQueueEntry(simfile=sim_file) qe.save() # Avoid Duplication return HttpResponseRedirect('/viewsimulationqueue')
def view_sim_output_summaries(request): last_runs = {} for simfile in SimFile.get_tracked_sims(): last_runs[simfile] = simfile.get_last_run(request.session['current_runconfig']) print last_runs runconfig = (request.session['current_runconfig']) data =[] for fg in FileGroup.objects.all(): sim_data = [ (sim, sim.get_last_run(runconfig)) for sim in fg.simfiles.all() ] data.append( (fg, sim_data) ) #cxt_data = {'last_runs':last_runs} cxt_data = {'data':data} print cxt_data csrf_context = RequestContext(request, cxt_data, [config_processor] ) return render_to_response('simulation_output_summaries.html', csrf_context)
def overview_update_sim_gui(_request, simfile_id): print 'Dajax call recieved', simfile_id from views import ensure_config ensure_config(_request) print 'A' sim_file = SimFile.get_tracked_sims(id=simfile_id) runconfig = _request.session['current_runconfig'] print 'B' last_run = sim_file.get_last_run(runconfig=runconfig) print 'Bb' exec_date = last_run.execution_data_string() if last_run is not None else "" print 'C' v = simplejson.dumps( {'sim_id':simfile_id, 'state':sim_file.get_status(runconfig=runconfig), 'is_queued':sim_file.is_queued(runconfig=runconfig), 'latest_exec_id':last_run.id if last_run else "", 'latest_exec_date': exec_date, } ) print 'Finsihed' return v
def view_simulation_failures(request): fileObjs = SimFile.get_tracked_sims() cxt_data = { 'failed_simulations': [fo for fo in fileObjs if fo.get_status() == SimRunStatus.UnhandledException], 'timeout_simulations': [fo for fo in fileObjs if fo.get_status() == SimRunStatus.TimeOut], 'nonzero_exitcode_simulations': [fo for fo in fileObjs if fo.get_status() == SimRunStatus.NonZeroExitCode], 'changed_simulations': [fo for fo in fileObjs if fo.get_status() == SimRunStatus.FileChanged], 'notrun_simulations': [fo for fo in fileObjs if fo.get_status() == SimRunStatus.NeverBeenRun], } csrf_context = RequestContext(request, cxt_data) return render_to_response('view_simulation_failures.html', csrf_context)
def overview_update_sim_gui(_request, simfile_id): print "Dajax call recieved", simfile_id from views import ensure_config ensure_config(_request) print 'A' sim_file = SimFile.get_tracked_sims(id=simfile_id) runconfig = _request.session['current_runconfig'] print 'B' last_run = sim_file.get_last_run(runconfig=runconfig) print 'Bb' exec_date = last_run.execution_data_string( ) if last_run is not None else "" print 'C' v = simplejson.dumps({ 'sim_id': simfile_id, 'state': sim_file.get_status(runconfig=runconfig), 'is_queued': sim_file.is_queued(runconfig=runconfig), 'latest_exec_id': last_run.id if last_run else "", 'latest_exec_date': exec_date, }) print 'Finsihed' return v
def overview_update_sim_gui_batch(_request, simfile_ids): print 'Updating!' ensure_config() if isinstance(simfile_ids, int): simfile_ids = [simfile_ids] elif isinstance(simfile_ids, basestring): simfile_ids = [int(tok) for tok in simfile_ids.split()] else: assert False res = [] for simfile_id in simfile_ids: try: sim_file = SimFile.get_tracked_sims(id=simfile_id) except SimFile.DoesNotExist: continue if not sim_file.does_file_exist(): sim_file.delete() continue runconfig = _request.session['current_runconfig'] last_run = sim_file.get_last_run(runconfig=runconfig) exec_date = last_run.execution_data_string() if last_run is not None else "" res.append( {'sim_id':simfile_id, 'state':sim_file.get_status(runconfig=runconfig), 'is_queued':sim_file.is_queued(runconfig=runconfig), 'latest_exec_id':last_run.id if last_run else "", 'latest_exec_date': str(exec_date), 'latest_exec_duration': last_run.execution_time if last_run else '' , } ) v = simplejson.dumps(res) print 'Retunrign from AJax' #print v return v
def overview_update_sim_gui(_request, simfile_id): print "Dajax call recieved", simfile_id from views import ensure_config ensure_config(_request) print "A" sim_file = SimFile.get_tracked_sims(id=simfile_id) runconfig = _request.session["current_runconfig"] print "B" last_run = sim_file.get_last_run(runconfig=runconfig) print "Bb" exec_date = last_run.execution_data_string() if last_run is not None else "" print "C" v = simplejson.dumps( { "sim_id": simfile_id, "state": sim_file.get_status(runconfig=runconfig), "is_queued": sim_file.is_queued(runconfig=runconfig), "latest_exec_id": last_run.id if last_run else "", "latest_exec_date": exec_date, } ) print "Finsihed" return v
def refreshsimlist(_request): states = {} for simfile in SimFile.get_tracked_sims(): states[simfile.id] = simfile.get_status() return simplejson.dumps({"sim_file_states": states})
def write_to_database( cls, sim_run_info): output_file_dir = mreorg.MReOrgConfig.get_image_store_dir() print 'Saving details from script: ', sim_run_info.script_name # We don't neeed to update this file every time: if mreorg.MReOrgConfig.is_non_curated_file(sim_run_info.script_name): return try: simfile = SimFile.get_tracked_sims( full_filename=sim_run_info.script_name) except: # DoesNotExistError,e : simfile = SimFile.create( full_filename=sim_run_info.script_name, tracked=True) simfile.save() # Create a simulation result object: simres = SimFileRun( simfile = simfile, execution_date = datetime.datetime.now(), execution_time = sim_run_info.time_taken, return_code = sim_run_info.return_code, std_out = sim_run_info.std_out, std_err = sim_run_info.std_err, exception_type = sim_run_info.exception_details[0], exception_traceback = str(sim_run_info.exception_details[2]), simulation_sha1hash = get_file_sha1hash(simfile.full_filename), library_sha1hash = '00000', runconfig = RunConfiguration.objects.get(id=int(os.environ['_MREORG_RUNCONFIGID'])) ) simres.save() output_file_dir = mreorg.MReOrgConfig.get_image_store_dir() # Create the images for image_filename in sim_run_info.output_images: if not image_filename.endswith('svg'): continue # Copy the output file: try: hashstr = mreorg.get_file_sha1hash( image_filename) except: hashstr=None if hashstr == None: continue opfile1 = output_file_dir + '/' + hashstr + '.svg' shutil.copyfile(image_filename, opfile1) f_thumb = image_filename.replace(".svg","thumb.png") os.system('convert %s -resize 400x300 %s'%( pipes.quote(image_filename),pipes.quote(f_thumb))) hashstr = hashlib.md5( open(f_thumb).read() ).hexdigest() hashstr = mreorg.get_file_sha1hash( f_thumb) opfile2 = output_file_dir + '/' + hashstr + ".png" shutil.copyfile(f_thumb, opfile2) im_obj = SimFileRunOutputImage( original_name = image_filename, hash_name = opfile1, hash_thumbnailname = opfile2, simulation = simres ) im_obj.save()
def simfile_details(request, simfile_id): sim_file = SimFile.get_tracked_sims(id=simfile_id) cxt_data = {'simfile': sim_file} csrf_context = RequestContext(request, cxt_data) return render_to_response('simfile_details.html', csrf_context)
def refreshsimlist(_request): states = {} for simfile in SimFile.get_tracked_sims(): states[simfile.id] = simfile.get_status() return simplejson.dumps({'sim_file_states': states})
def do_untrack_all(request): for sim in SimFile.get_tracked_sims(): sim.tracking_status = TrackingStatus.NotTracked sim.save() return HttpResponseRedirect('/tracking')