class Author(object): """Author ingestion workflow for HEPNames/Authors collection.""" name = "Author" data_type = "authors" workflow = [ # Make sure schema is set for proper indexing in Holding Pen set_schema, validate_record('authors'), IF_ELSE( is_marked('is-update'), SEND_UPDATE_NOTIFICATION, ASK_FOR_REVIEW + [ IF_ELSE( is_record_accepted, ( SEND_TO_LEGACY + NOTIFY_ACCEPTED + [ # TODO: once legacy is out, this should become # unconditional, and remove the SEND_TO_LEGACY # steps IF_NOT(in_production_mode, [store_record]), ] + CLOSE_TICKET_IF_NEEDED), NOTIFY_NOT_ACCEPTED), ], ), ]
def test_validate_record(): schema = load_schema('hep') data = { '_collections': [ 'Literature', ], 'document_type': [ 'article', ], 'titles': [ { 'title': 'Partial Symmetries of Weak Interactions' }, ], } extra_data = {} assert validate(data, schema) is None obj = MockObj(data, extra_data) eng = MockEng() _validate_record = validate_record('hep') assert _validate_record(obj, eng) is None
class EditArticle(object): """Editing workflow for Literature collection.""" name = 'edit_article' data_type = 'hep' workflow = ([ change_status_to_waiting, validate_record('hep'), update_record, send_robotupload( mode='replace', priority_config_key='LEGACY_ROBOTUPLOAD_PRIORITY_EDIT_ARTICLE'), cleanup_pending_workflow, ])
def test_validate_record_raises_when_record_is_invalid(): schema = load_schema('hep') data = { 'document_type': [ 'article', ], 'titles': [ {'title': 'Partial Symmetries of Weak Interactions'}, ], } extra_data = {} with pytest.raises(ValidationError): validate(data, schema) obj = MockObj(data, extra_data) eng = MockEng() _validate_record = validate_record('hep') with pytest.raises(ValidationError): _validate_record(obj, eng)
def test_validate_record_raises_when_record_is_invalid(): schema = load_schema('hep') data = { 'document_type': [ 'article', ], 'titles': [ {'title': 'Partial Symmetries of Weak Interactions'}, ], } extra_data = {} with pytest.raises(ValidationError): validate(data, schema) obj = MockObj(data, extra_data) eng = MockEng() _validate_record = validate_record('hep') with pytest.raises(ValidationError): _validate_record(obj, eng)
def test_validate_record(): schema = load_schema('hep') data = { '_collections': [ 'Literature', ], 'document_type': [ 'article', ], 'titles': [ {'title': 'Partial Symmetries of Weak Interactions'}, ], } extra_data = {} assert validate(data, schema) is None obj = MockObj(data, extra_data) eng = MockEng() _validate_record = validate_record('hep') assert _validate_record(obj, eng) is None
class Author(object): """Author ingestion workflow for HEPNames/Authors collection.""" name = "Author" data_type = "authors" workflow = [ load_from_source_data, # Make sure schema is set for proper indexing in Holding Pen set_schema, validate_record('authors'), IF_ELSE( is_marked('is-update'), [ SEND_TO_LEGACY, SEND_UPDATE_NOTIFICATION, ], [ ASK_FOR_REVIEW, IF_ELSE(is_record_accepted, ([store_record] + SEND_TO_LEGACY + NOTIFY_ACCEPTED + CLOSE_TICKET_IF_NEEDED), NOTIFY_NOT_ACCEPTED), ], ), ]
mark('already-in-holding-pen', None), mark('previously_rejected', None), mark('is-update', None), mark('stopped-matched-holdingpen-wf', None), mark('approved', None), mark('unexpected-workflow-path', None), save_workflow ] PRE_PROCESSING = [ load_from_source_data, # Make sure schema is set for proper indexing in Holding Pen set_schema, INIT_MARKS, validate_record('hep') ] class Article(object): """Article ingestion workflow for Literature collection.""" name = "HEP" data_type = "hep" workflow = ( PRE_PROCESSING + NOTIFY_IF_SUBMISSION + MARK_IF_MATCH_IN_HOLDINGPEN + CHECK_IS_UPDATE + STOP_IF_EXISTING_SUBMISSION + CHECK_AUTO_APPROVE +
mark('auto-approved', None), mark('already-in-holding-pen', None), mark('previously_rejected', None), mark('is-update', None), mark('stopped-matched-holdingpen-wf', None), mark('approved', None), mark('unexpected-workflow-path', None), save_workflow ] PRE_PROCESSING = [ # Make sure schema is set for proper indexing in Holding Pen set_schema, INIT_MARKS, validate_record('hep') ] class Article(object): """Article ingestion workflow for Literature collection.""" name = "HEP" data_type = "hep" workflow = ( PRE_PROCESSING + NOTIFY_IF_SUBMISSION + MARK_IF_MATCH_IN_HOLDINGPEN + MARK_IF_UPDATE + PROCESS_HOLDINGPEN_MATCHES + ENHANCE_RECORD +