Exemple #1
0
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
Exemple #3
0
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
Exemple #4
0
        # 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
Exemple #6
0
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