Esempio n. 1
0
    def record_from_model(workflow_object):
        """Build data from workflow object."""
        # NOTE: This entire function may in principle be in invenio_workflows
        # WorkflowObject model as a to_dict() kind of function of the model.
        workflow_definition = workflows.get(workflow_object.workflow.name)
        record = {}
        record["id"] = workflow_object.id
        if not workflow_object.data_type:
            if workflow_definition and hasattr(workflow_definition, 'data_type'):
                data_type = workflow_definition.data_type
            else:
                data_type = "workflow"
        else:
            data_type = workflow_object.data_type
        record["_workflow"] = {}
        record["_workflow"]["data_type"] = data_type
        record["_workflow"]["status"] = ObjectStatus.labels[workflow_object.status.value]
        record["_workflow"]["created"] = workflow_object.created.isoformat()
        record["_workflow"]["modified"] = workflow_object.modified.isoformat()
        record["_workflow"]["id_workflow"] = six.text_type(workflow_object.id_workflow)
        record["_workflow"]["id_user"] = workflow_object.id_user
        record["_workflow"]["id_parent"] = workflow_object.id_parent
        record["_workflow"]["workflow"] = workflow_object.workflow.name

        if isinstance(workflow_object.data, dict):
            record.update(workflow_object.data)
        return record
Esempio n. 2
0
def get_model_from_obj(obj):
    """Return an instance of the model from the workflow."""
    from invenio_workflows.proxies import workflows
    workflow = workflows.get(obj.workflow.name)

    if workflow is not None:
        return workflow.model(obj)
    else:
        return None
Esempio n. 3
0
    def record_from_object(workflow_object):
        """Build data from workflow object.

        NOTE: This entire function may in principle be in
        workflow_object_class model as a to_dict() kind of function of
        the model.
        """
        record = {}
        record["id"] = workflow_object.id
        _workflow = {}
        _workflow["data_type"] = workflow_object.data_type
        _workflow["status"] = workflow_object.status.name
        _workflow["id_user"] = workflow_object.id_user
        _workflow["id_parent"] = workflow_object.id_parent
        _workflow["id_workflow"] = None
        _workflow["workflow_class"] = None
        _workflow["workflow_position"] = workflow_object.callback_pos
        _workflow["workflow_name"] = None

        if (
                workflow_object.workflow and
                workflow_object.workflow.name in workflows
        ):
            workflow_definition = workflows.get(workflow_object.workflow.name)

            if (
                    not _workflow["data_type"] and
                    workflow_definition and
                    hasattr(workflow_definition, 'data_type')
            ):
                _workflow["data_type"] = workflow_definition.data_type

            if workflow_definition and hasattr(workflow_definition, 'name'):
                _workflow["workflow_name"] = workflow_definition.name

            if workflow_object.id_workflow:
                _workflow["id_workflow"] = six.text_type(
                    workflow_object.id_workflow
                )

            _workflow["workflow_class"] = workflow_object.workflow.name

        if isinstance(workflow_object.data, dict):
            record.update({"metadata": workflow_object.data})
        if isinstance(workflow_object.extra_data, dict):
            record.update({"_extra_data": workflow_object.extra_data})

        record["_workflow"] = _workflow
        return record
Esempio n. 4
0
    def record_from_object(workflow_object):
        """Build data from workflow object.

        NOTE: This entire function may in principle be in
        workflow_object_class model as a to_dict() kind of function of
        the model.
        """
        record = {}
        record["id"] = workflow_object.id
        _workflow = {}
        _workflow["data_type"] = workflow_object.data_type
        _workflow["status"] = workflow_object.status.name
        _workflow["id_user"] = workflow_object.id_user
        _workflow["id_parent"] = workflow_object.id_parent
        _workflow["id_workflow"] = None
        _workflow["workflow_class"] = None
        _workflow["workflow_position"] = workflow_object.callback_pos
        _workflow["workflow_name"] = None

        if (
                workflow_object.workflow and
                workflow_object.workflow.name in workflows
        ):
            workflow_definition = workflows.get(workflow_object.workflow.name)

            if (
                    not _workflow["data_type"] and
                    workflow_definition and
                    hasattr(workflow_definition, 'data_type')
            ):
                _workflow["data_type"] = workflow_definition.data_type

            if workflow_definition and hasattr(workflow_definition, 'name'):
                _workflow["workflow_name"] = workflow_definition.name

            if workflow_object.id_workflow:
                _workflow["id_workflow"] = six.text_type(
                    workflow_object.id_workflow
                )

            _workflow["workflow_class"] = workflow_object.workflow.name

        if isinstance(workflow_object.data, dict):
            record.update({"metadata": workflow_object.data})
        if isinstance(workflow_object.extra_data, dict):
            record.update({"_extra_data": workflow_object.extra_data})

        record["_workflow"] = _workflow
        return record
Esempio n. 5
0
    def record_from_model(workflow_object):
        """Build data from workflow object.

        NOTE: This entire function may in principle be in invenio_workflows
        WorkflowObject model as a to_dict() kind of function of the model.
        """
        record = {}
        record["id"] = workflow_object.id
        record["_workflow"] = {}
        record["_workflow"]["data_type"] = workflow_object.data_type
        record["_workflow"]["status"] = ObjectStatus.labels[
            workflow_object.status.value]
        record["_workflow"]["created"] = workflow_object.created.isoformat()
        record["_workflow"]["modified"] = workflow_object.modified.isoformat()
        record["_workflow"]["id_user"] = workflow_object.id_user
        record["_workflow"]["id_parent"] = workflow_object.id_parent
        record["_workflow"]["id_workflow"] = None
        record["_workflow"]["workflow_class"] = None
        record["_workflow"]["workflow_position"] = None
        record["_workflow"]["workflow_name"] = None

        if workflow_object.workflow and workflow_object.workflow.name in workflows:
            workflow_definition = workflows.get(workflow_object.workflow.name)

            if not record["_workflow"][
                    "data_type"] and workflow_definition and hasattr(
                        workflow_definition, 'data_type'):
                record["_workflow"][
                    "data_type"] = workflow_definition.data_type

            if workflow_definition and hasattr(workflow_definition, 'name'):
                record["_workflow"]["workflow_name"] = workflow_definition.name

            if workflow_object.id_workflow:
                record["_workflow"]["id_workflow"] = six.text_type(
                    workflow_object.id_workflow)

            record["_workflow"][
                "workflow_class"] = workflow_object.workflow.name
            record["_workflow"]["workflow_position"] = six.text_type(
                workflow_object.callback_pos)

        if isinstance(workflow_object.data, dict):
            record.update(workflow_object.data)
        return record
Esempio n. 6
0
    def record_from_model(workflow_object):
        """Build data from workflow object.

        NOTE: This entire function may in principle be in invenio_workflows
        WorkflowObject model as a to_dict() kind of function of the model.
        """
        record = {}
        record["id"] = workflow_object.id
        record["_workflow"] = {}
        record["_workflow"]["data_type"] = workflow_object.data_type
        record["_workflow"]["status"] = ObjectStatus.labels[workflow_object.status.value]
        record["_workflow"]["created"] = workflow_object.created.isoformat()
        record["_workflow"]["modified"] = workflow_object.modified.isoformat()
        record["_workflow"]["id_user"] = workflow_object.id_user
        record["_workflow"]["id_parent"] = workflow_object.id_parent
        record["_workflow"]["id_workflow"] = None
        record["_workflow"]["workflow_class"] = None
        record["_workflow"]["workflow_position"] = None
        record["_workflow"]["workflow_name"] = None

        if workflow_object.workflow and workflow_object.workflow.name in workflows:
            workflow_definition = workflows.get(workflow_object.workflow.name)

            if not record["_workflow"]["data_type"] and workflow_definition and hasattr(
                    workflow_definition, 'data_type'):
                record["_workflow"]["data_type"] = workflow_definition.data_type

            if workflow_definition and hasattr(workflow_definition, 'name'):
                record["_workflow"]["workflow_name"] = workflow_definition.name

            if workflow_object.id_workflow:
                record["_workflow"]["id_workflow"] = six.text_type(workflow_object.id_workflow)

            record["_workflow"]["workflow_class"] = workflow_object.workflow.name
            record["_workflow"]["workflow_position"] = six.text_type(workflow_object.callback_pos)

        if isinstance(workflow_object.data, dict):
            record.update(workflow_object.data)
        return record