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
def setUp(self): from inspirehep.modules.workflows.dojson import bibfield self.bibfield_json = json.loads( pkg_resources.resource_string( 'tests', os.path.join( 'fixtures', 'test_bibfield_record.json' ) ) ) self.record = bibfield.do(self.bibfield_json)