def test_payload_sip_creation(self): """A Payload has a sip.""" from invenio_workflows.api import start from inspirehep.modules.workflows.models import Payload workflow = start('payload_fixture', data=[self.some_record], module_name="unit_tests") modified_object = workflow.completed_objects[0] p = Payload(modified_object) sip = p.get_latest_sip() self.assertTrue(sip.metadata)
def test_payload_file_creation(self): """Can add a file to a Payload.""" from invenio_workflows.models import BibWorkflowObject from inspirehep.modules.workflows.models import Payload from inspirehep.utils.helpers import ( get_file_by_name, add_file_by_name, ) obj = BibWorkflowObject.create_object() obj.save() obj.data = obj.get_data() # FIXME hack until workflow 2.0 payload = Payload.create(workflow_object=obj, type="payload_fixture") payload.save() fd, filename = tempfile.mkstemp() os.close(fd) newpath = add_file_by_name(payload, filename) self.assertTrue(newpath) self.assertTrue(get_file_by_name(payload, os.path.basename(filename))) BibWorkflowObject.delete(obj)
def migrate_workflow_object(obj_id): try: obj = BibWorkflowObject.query.get(obj_id) rename_object_action(obj) if obj.workflow.name == "process_record_arxiv": metadata = obj.get_data() if isinstance(metadata, string_types): # Ignore records that have string as data return if 'drafts' in metadata: # New data model detected, just save and exit obj.save() return if hasattr(metadata, 'dumps'): metadata = metadata.dumps(clean=True) obj.data = bibfield.do(metadata) payload = Payload.create( type=obj.workflow.name, workflow_object=obj ) payload.save() elif obj.workflow.name == "literature": d = Deposition(obj) sip = d.get_latest_sip() if sip: sip.metadata = bibfield.do(sip.metadata) sip.package = legacy_export_as_marc(hep2marc.do(sip.metadata)) d.save() elif obj.workflow.name in ("authornew", "authorupdate"): data = obj.get_data() obj.set_data(author_bibfield.do(data)) obj.save() else: obj.save() # To update and trigger indexing reset_workflow_object_states(obj) except Exception as err: current_app.logger.error("Problem migrating record {0}".format(obj_id)) current_app.logger.exception(err) msg = "Error: %r\n%s" % \ (err, traceback.format_exc()) obj.set_error_message(msg) obj.save(version=ObjectVersion.ERROR) raise