Esempio n. 1
0
    def create(parameter_val, value):
        workflow = parameter_val.wf_module.workflow
        pspec = parameter_val.parameter_spec

        # We don't create a Delta for derived_data parameter. Such parameters are essentially caches,
        # (e.g. chart output image) and are created either during module render() or in the front end
        # Instead, we just set the value -- and trust that undo-ing the other parameters will also set
        # the derived_data parameters.
        if pspec.derived_data:
            parameter_val.set_value(value)
            return None

        # Not derived data, we're doing this.
        description = \
            'Changed parameter \'' + pspec.name + '\' of \'' + parameter_val.wf_module.module_version.module.name + '\' module'

        delta =  ChangeParameterCommand.objects.create(
            parameter_val=parameter_val,
            new_value=value,
            old_value=parameter_val.get_value(),
            workflow=workflow,
            command_description=description)

        delta.forward()

        # increment workflow version number, triggers global re-render if this parameter can effect output
        notify = not pspec.ui_only
        if notify:
            notify_client_workflow_version_changed(workflow)

        return delta
Esempio n. 2
0
    def create(wf_module):
        description = 'Deleted \'' + wf_module.module_version.module.name + '\' module'

        workflow = wf_module.workflow                                   # about to be set to null, so save it
        delta = DeleteModuleCommand.objects.create(
            workflow=workflow,
            wf_module=wf_module,
            command_description=description)
        delta.forward()
        notify_client_workflow_version_changed(workflow)
        return delta
Esempio n. 3
0
def save_data_if_changed(wfm, new_data, auto_change_version=True):

    wfm.last_update_check = timezone.now()
    wfm.save()

    # Check if currently saved data is any different. If so create a new data version and maybe switch to it
    old_data = wfm.retrieve_data()
    if new_data != old_data:
        version = wfm.store_data(new_data)
        if auto_change_version:
            ChangeDataVersionCommand.create(wfm, version)  # also notifies client
    else:
        # no new data version, but we still want client to update WfModule status and last update check time
        notify_client_workflow_version_changed(wfm.workflow)
Esempio n. 4
0
    def create(wf_module, version):
        description = \
            'Changed \'' + wf_module.module_version.module.name + '\' module data version to ' + str(version)

        delta = ChangeDataVersionCommand.objects.create(
            wf_module=wf_module,
            new_version=version,
            old_version=wf_module.get_stored_data_version(),
            workflow=wf_module.workflow,
            command_description=description)

        delta.forward()
        notify_client_workflow_version_changed(wf_module.workflow)
        return delta
Esempio n. 5
0
    def create(workflow, module_version, insert_before):
        newwfm = WfModule.objects.create(workflow=None, module_version=module_version,
                                         order=insert_before, is_collapsed=False)
        newwfm.create_default_parameters()

        description = 'Added \'' + module_version.module.name + '\' module'
        delta = AddModuleCommand.objects.create(
            workflow=workflow,
            wf_module=newwfm,
            order=insert_before,
            command_description=description)
        delta.forward()

        notify_client_workflow_version_changed(workflow)
        return delta
Esempio n. 6
0
    def create(wf_module, notes):
        old_value = wf_module.notes if wf_module.notes else ''
        description = 'Changed workflow module note from ' + old_value + ' to ' + notes

        delta = ChangeWfModuleNotesCommand.objects.create(
            workflow = wf_module.workflow,
            wf_module = wf_module,
            new_value = notes,
            old_value = old_value,
            command_description = description
        )

        delta.forward()
        notify_client_workflow_version_changed(wf_module.workflow)

        return delta
Esempio n. 7
0
    def create(workflow, name):
        old_name = workflow.name

        description = 'Changed workflow name from ' + old_name + ' to ' + name

        delta = ChangeWorkflowTitleCommand.objects.create(
            workflow = workflow,
            new_value = name,
            old_value = workflow.name,
            command_description = description
        )

        delta.forward()

        notify_client_workflow_version_changed(workflow)

        return delta