Пример #1
0
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
Пример #3
0
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
Пример #7
0
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),
            ],
        ),
    ]
Пример #8
0
    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 +
Пример #9
0
    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 +