class ScatteringKernelInput(base): # @staticmethod def default(self, director): try: page, document = self._head( director ) except AuthenticationError, err: return err.page formcomponent = self.retrieveFormToShow( 'selectkernel') formcomponent.director = director # build the SKChoice form SKChoice = document.form(name='scatteringKernelInput', action=director.cgihome) # specify action action = actionRequireAuthentication( actor = 'scatteringKernelInput', sentry = director.sentry, routine = 'onSelect', label = '', arguments = {'form-received': formcomponent.name }, ) from vnf.weaver import action_formfields action_formfields( action, SKChoice ) # expand the form with fields of the data object that is being edited formcomponent.expand( SKChoice ) submit = SKChoice.control(name='submit',type="submit", value="next") return page
class SampleInput(FormActor): class Inventory(FormActor.Inventory): import pyre.inventory id = pyre.inventory.str("id", default=None) id.meta['tip'] = "the unique identifier for a given search" page = pyre.inventory.str('page', default='empty') def default(self, director): return self.inputMaterial(director) def inputMaterial(self, director): try: page = director.retrievePage('sampleInput') except AuthenticationError, err: return err.page # experiment = director.clerk.getNeutronExperiment(self.inventory.id) main = page._body._content._main # populate the main column document = main.document(title='Sample input') document.description = '' document.byline = '<a href="http://danse.us">DANSE</a>' formcomponent = self.retrieveFormToShow('inputMaterial') formcomponent.director = director # build the form form = document.form(name='', action=director.cgihome) # specify action action = actionRequireAuthentication( actor='sampleInput', sentry=director.sentry, routine='selectShape', label='', id=self.inventory.id, arguments={'form-received': formcomponent.name}, ) from vnf.weaver import action_formfields action_formfields(action, form) # expand the form with fields of the data object that is being edited formcomponent.expand(form) submit = form.control(name='submit', type="submit", value="next") #self.processFormInputs(director) return page
class NeutronExperimentWizard(base): class Inventory(base.Inventory): import pyre.inventory id = pyre.inventory.str("id", default='') id.meta['tip'] = "the unique identifier of the experiment" ncount = pyre.inventory.str('ncount', default=1e6) ncount.meta['tip'] = 'number of neutrons' pass # end of Inventory def start(self, director): try: page = director.retrieveSecurePage('neutronexperimentwizard') except AuthenticationError, err: return err.page if self.inventory.id == '': #create a new experiment from vnf.dom.NeutronExperiment import NeutronExperiment experiment = director.clerk.new_ownedobject(NeutronExperiment) experiment.status = 'started' director.clerk.updateRecord(experiment) #need to reload the page so that id is correctly self.inventory.id = experiment.id page = director.retrieveSecurePage('neutronexperimentwizard') pass main = page._body._content._main # populate the main column document = main.document(title='Neutron Experiment Wizard: start') document.description = '' document.byline = 'byline?' p = document.paragraph() p.text = [ 'To run a virtual neutron experiment, you will need to select', 'a neutron instrument, prepare your sample, put your', 'sample in a sample holder, select instrument parameters', 'for this experiment, and finally pick a computation server', 'to run your virtual neutron experiment.', 'Default values are provided for all these characteristics', 'of the experiment, but please review them before launching', 'your simulation.', ] p = document.paragraph() p.text = [ 'Please first assign a name to this experiment:', ] formcomponent = self.retrieveFormToShow( 'neutronexperimentwizard_start') formcomponent.inventory.experiment_id = self.inventory.id formcomponent.director = director # create form form = document.form(name='start', legend=formcomponent.legend(), action=director.cgihome) # specify action action = actionRequireAuthentication( actor='neutronexperimentwizard', sentry=director.sentry, label='', routine='verify_experiment_name', id=self.inventory.id, arguments={'form-received': formcomponent.name}) from vnf.weaver import action_formfields action_formfields(action, form) # expand the form with fields of the data object that is being edited formcomponent.expand(form) # run button submit = form.control(name="actor.form-received.submit", type="submit", value="Continue") # self._footer( document, director ) return page
# create form form = document.form(name='selectneutroninstrument', legend=formcomponent.legend(), action=director.cgihome) # specify action action = actionRequireAuthentication( actor='neutronexperimentwizard', sentry=director.sentry, label='', routine='configure_instrument', id=self.inventory.id, arguments={'form-received': formcomponent.name}) from vnf.weaver import action_formfields action_formfields(action, form) # expand the form with fields of the data object that is being edited formcomponent.expand(form) # run button submit = form.control(name="submit", type="submit", value="Continue") # self._footer( document, director ) return page def configure_instrument(self, director, errors=None): try: page = director.retrieveSecurePage('neutronexperimentwizard') except AuthenticationError, err: return err.page
class SampleAssemblyWizard(base): class Inventory(base.Inventory): import pyre.inventory id = pyre.inventory.str('id', default='') pass # end of Inventory def default(self, director): return self.new(director) def new(self, director): 'new sample assembly. wizard step 1' try: page = director.retrieveSecurePage('sampleassembly') except AuthenticationError, err: return err.page record = new_sampleassembly(director) main = page._body._content._main # populate the main column document = main.document(title='Sample Assembly Builder') document.description = ( 'A sample assembly is a collection of neutron scatterers. '\ 'For example, it can consist of a main sample, '\ 'a sample container, and a furnace.\n'\ ) document.byline = 'byline?' # form formcomponent = self.retrieveFormToShow('sampleassembly') formcomponent.inventory.id = record.id formcomponent.director = director form = document.form(name='sampleassembly', legend=formcomponent.legend(), action=director.cgihome) # specify action action = actionRequireAuthentication(actor='sampleassemblywizard', sentry=director.sentry, label='', routine='new1', arguments={ 'id': record.id, 'form-received': formcomponent.name }) from vnf.weaver import action_formfields action_formfields(action, form) # expand the form with fields of the data object that is being edited formcomponent.expand(form) # ok button submit = form.control(name="submit", type="submit", value="next") return page
class Job(base): class Inventory(base.Inventory): import time import pyre.inventory id = pyre.inventory.str("id", default=None) id.meta['tip'] = "the unique identifier for a given search" def default(self, director): return self.listall(director) def listall(self, director): page = director.retrievePage('job') main = page._body._content._main # populate the main column document = main.document(title='List of computational jobs') document.description = '' document.byline = 'byline?' # retrieve id:record dictionary from db clerk = director.clerk jobs = clerk.getJobs(where='owner=%r' % director.sentry.username) p = document.paragraph() numJobs = len(jobs) columns = [ 'jobName', 'id', 'owner', 'server', 'numprocessors', 'status', 'timeStart', 'timeCompletion', ] numColumns = len(columns) from PyHtmlTable import PyHtmlTable t = PyHtmlTable(numJobs, numColumns, { 'width': '400', 'border': 2, 'bgcolor': 'white' }) for colNum, col in enumerate(columns): t.setc(0, colNum, col) continue for row, job in enumerate(jobs): for colNum, colName in enumerate(columns): value = job.getColumnValue(colName) if colName == 'jobName': link = action_link( actionRequireAuthentication( 'job', director.sentry, label=value, routine='show', id=job.id, ), director.cgihome) value = link pass # endif t.setc(row + 1, colNum, value) #colNum+=1 p.text = [t.return_html()] return page def edit(self, director): try: page = director.retrieveSecurePage('job') except AuthenticationError, err: return err.page main = page._body._content._main job = self.processFormInputs(director) if job is None: # input is not from form job = director.clerk.getJob(self.inventory.id) pass # endif document = main.document(title='Job editor') formcomponent = self.retrieveFormToShow('job') formcomponent.inventory.id = job.id formcomponent.director = director form = document.form(name='job', legend=formcomponent.legend(), action=director.cgihome) # specify action action = actionRequireAuthentication( actor='job', sentry=director.sentry, label='', routine='submit', arguments={'form-received': formcomponent.name}) from vnf.weaver import action_formfields action_formfields(action, form) # expand the form with fields of the data object that is being edited formcomponent.expand(form) submit = form.control(name="submit", type="submit", value="Submit") return page
self._tree( document, director ) # create form form = document.form( name='instrument', legend= formcomponent.legend(), action=director.cgihome) # specify action action = actionRequireAuthentication( actor = 'instrument', sentry = director.sentry, label = '', routine = 'set', arguments = { 'id': self.inventory.id, 'form-received': formcomponent.name } ) from vnf.weaver import action_formfields action_formfields( action, form ) # expand the form with fields of the data object that is being edited formcomponent.expand( form ) # ok button submit = form.control(name="submit", type="submit", value="OK") return page def set(self, director): try: page = director.retrieveSecurePage( 'sampleassembly' ) except AuthenticationError, error: return error.page