def reduction_submit(request, reduction_id, instrument_name): """ Submit a reduction script to Fermi. @param request: request object @param reduction_id: pk of the ReductionProcess object """ logger.debug("Reduction: %s instrument_name=%s"%(inspect.stack()[0][3],instrument_name)) instrument_name_lowercase = str.lower(str(instrument_name)) instrument_forms = view_util.import_module_from_app(instrument_name_lowercase,'forms') # TODO: Make sure the submission errors are clearly reported reduction_proc = get_object_or_404(ReductionProcess, pk=reduction_id, owner=request.user) # Start a new transaction transaction = remote.view_util.transaction(request, start=True) if transaction is None: breadcrumbs = Breadcrumbs() breadcrumbs.append_reduction(instrument_name_lowercase) breadcrumbs.append_reduction_options(instrument_name_lowercase, reduction_id) messages.add_message(request, messages.ERROR, "Could not connect to Fermi and establish transaction.") template_values = {'back_url': reverse('reduction_options', kwargs={'reduction_id' : reduction_id, 'instrument_name': instrument_name_lowercase}), 'breadcrumbs': breadcrumbs, } template_values = reduction_server.view_util.fill_template_values(request, **template_values) logger.debug(pprint.pformat(template_values)) return render_to_response('remote/failed_connection.html', template_values, context_instance=RequestContext(request)) data = instrument_forms.ReductionOptions.data_from_db(request.user, reduction_id) code = instrument_forms.ReductionOptions.as_mantid_script(data, transaction.directory) jobID = remote.view_util.submit_job(request, transaction, code) if jobID is not None: job = RemoteJob(reduction=reduction_proc, remote_id=jobID, properties=reduction_proc.properties, transaction=transaction) job.save() logger.debug("Created a RemoteJob: %s",job) messages.add_message(request, messages.SUCCESS, message="Job %s sucessfully submitted. <a href='%s' class='message-link'>Click to see the results this job </a>."% (job.id, reverse('reduction_query', kwargs={'remote_job_id' : job.id, 'instrument_name' : instrument_name_lowercase}))) return redirect(reverse('reduction_options', kwargs={'reduction_id' : reduction_id, 'instrument_name': instrument_name_lowercase}))
def reduction_query(request, remote_job_id, instrument_name): """ Show status of a given remote job. @param request: request object @param remote_job_id: pk of the RemoteJob object """ instrument_name_lowercase = str.lower(str(instrument_name)) instrument_name_capitals = str.capitalize(str(instrument_name)) logger.debug("Views: %s job_id=%s"%(inspect.stack()[0][3],remote_job_id)) remote_job = get_object_or_404(RemoteJob, pk=remote_job_id) breadcrumbs = Breadcrumbs() breadcrumbs.append('%s reduction'%instrument_name_lowercase,reverse('reduction_home', kwargs={'instrument_name': instrument_name_lowercase })) breadcrumbs.append_reduction_options(instrument_name_lowercase, remote_job.reduction.id ) breadcrumbs.append('jobs',reverse('reduction_jobs', kwargs={'instrument_name': instrument_name_lowercase })) breadcrumbs.append("job %s" % remote_job_id) template_values = {'remote_job': remote_job, 'remote_job_id' : remote_job.pk, 'parameters': remote_job.get_data_dict(), 'reduction_id': remote_job.reduction.id, 'breadcrumbs': breadcrumbs, 'back_url': request.path, 'instrument': instrument_name_lowercase} template_values = remote.view_util.fill_job_values(request, remote_job.remote_id, **template_values) template_values = reduction_server.view_util.fill_template_values(request, **template_values) template_values['title'] = "%s job results"%instrument_name_capitals # Go through the files and find data to plot if 'job_files' in template_values and 'trans_id' in template_values: ints_view_util = view_util.import_module_from_app(instrument_name_lowercase,'view_util') template_values = ints_view_util.set_into_template_values_job_files(template_values, request, remote_job) logger.debug(pprint.pformat(template_values)) return render_to_response('%s/reduction_query.html'%instrument_name, template_values, context_instance=RequestContext(request))