Exemple #1
0
def test_delete(migrate_provider):
    def delete_handler(oai_identifier, datestamp):
        pass

    synchronizer = OAISynchronizer(migrate_provider,
                                   delete_record=delete_handler)
    synchronizer.delete("bla", datetime.utcnow())
Exemple #2
0
def test_get_oai_identifiers_2(migrate_provider):
    oai_sync = OAISynchronizer(migrate_provider)
    results = oai_sync._get_oai_identifiers(
        sickle=Sickle("https://invenio.nusl.cz/oai2d/"),
        metadata_prefix="marcxml",
    )
    assert isinstance(results, OAIItemIterator)
Exemple #3
0
def test_synchronize_delete(migrate_provider):
    def delete_handler(oai_identifier, datestamp):
        print("deleted")

    class Identifier:
        datestamp = datetime.utcnow()
        identifier = random.randint(0, 100000)
        deleted = True

    identifiers = [Identifier() for x in range(10)]
    synchronizer = OAISynchronizer(migrate_provider,
                                   delete_record=delete_handler)
    synchronizer.synchronize(identifiers=identifiers)
    assert synchronizer.deleted == 10
Exemple #4
0
def synchronizer_instance(app, test_db):
    provider = OAIProvider(
        code="uk",
        oai_endpoint="https://dspace.cuni.cz/oai/nusl",
        set_="nusl_set",
        metadata_prefix="xoai"
    )
    db_.session.add(provider)
    db_.session.commit()
    return OAISynchronizer(provider)
Exemple #5
0
def test_synchronize_create(migrate_provider, record_xml, sample_record):
    class Record:
        xml = record_xml

    def create_handler(*args, **kwargs):
        return sample_record.id

    @Decorators.parser("test_parser", "nusl")
    def parser(*args, **kwargs):
        return {"id": "1", "title": "Some title", "language": ["cze", "eng"]}

    synchronizer = OAISynchronizer(migrate_provider,
                                   parser_name="test_parser",
                                   create_record=create_handler)
    synchronizer.sickle.GetRecord = MagicMock(return_value=Record())
    synchronizer.transformer.transform = MagicMock(return_value={
        "id": "1",
        "title": "Some title",
        "language": ["cze", "eng"]
    })
    synchronizer.oai_sync = OAISync(provider_id=migrate_provider.id)
    synchronizer.update("bla", datetime.utcnow())
Exemple #6
0
def test_get_oai_identifiers(migrate_provider):
    oai_sync = OAISynchronizer(migrate_provider)
    results = oai_sync._get_oai_identifiers()
    assert isinstance(results, OAIItemIterator)
Exemple #7
0
def test_delete_2(migrate_provider):
    synchronizer = OAISynchronizer(migrate_provider)
    with pytest.raises(HandlerNotFoundError):
        synchronizer.delete("bla", datetime.utcnow())
Exemple #8
0
def test_init(app, test_db, migrate_provider):
    synchronizer = OAISynchronizer(migrate_provider)
    assert synchronizer is not None
def import_uk(start, start_oai, break_on_error):
    for _ in ("elasticsearch", "urllib3"):
        logging.getLogger(_).setLevel(logging.CRITICAL)
    uk_provider = OAIProvider.query.filter_by(code="uk").one_or_none()
    constant_fields = {
        "provider": {"$ref": "http://127.0.0.1:5000/api/taxonomies/institutions/00216208/"},
        "accessRights": {"$ref": "http://127.0.0.1:5000/api/taxonomies/accessRights/c_abf2/"},
        "accessibility": [{"lang": "cze", "value": "Dostupné v digitálním repozitáři UK."}, {
            "lang": "eng", "value": "Available in the Charles University Digital Repository."
        }]
    }
    if not uk_provider:
        uk_provider = OAIProvider(
            code="uk",
            description="Univerzita Karlova",
            oai_endpoint="https://dspace.cuni.cz/oai/nusl",
            set_="nusl_set",
            metadata_prefix="xoai",
            constant_fields=constant_fields
        )
        db.session.add(uk_provider)
        db.session.commit()
    unhandled_paths = {
        "/dc/date/accessioned",
        "/dc/date/available",
        "/dc/date/issued",
        "/dc/identifier/repId",
        "/dc/identifier/aleph",
        "/dc/description/provenance",
        "/dc/description/department",
        "/dc/description/faculty",
        "/dc/language/cs_CZ",
        "/dc/publisher",
        "/dcterms/created",
        "/thesis/degree/name",
        "/thesis/degree/program",
        "/thesis/degree/level",
        "/uk/abstract",
        "/uk/thesis",
        "/uk/taxonomy",
        "/uk/faculty-name",
        "/uk/faculty-abbr",
        "/uk/file-availability",
        "/uk/degree-discipline",
        "/uk/degree-program",
        "/uk/publication-place",
        "/bundles",
        "/others/handle",
        "/others/lastModifyDate",
        "/repository"
    }
    sync = OAISynchronizer(
        uk_provider,
        parser_name="xoai",
        unhandled_paths=unhandled_paths,
        create_record=nusl_theses.create_draft_record,
        update_record=nusl_theses.update_draft_record,
        delete_record=nusl_theses.delete_draft_record,
        pid_type="dnusl",
        validation=nusl_theses.validate
    )
    api = current_app.wsgi_app.mounts['/api']
    with api.app_context():
        sync.run(start_id=start, start_oai=start_oai, break_on_error=break_on_error)
Exemple #10
0
def test_uk_one_record(app, uk_db, schemas):
    uk_provider = OAIProvider.query.filter_by(code="uk").one_or_none()
    constant_fields = {
        "provider": {"$ref": "http://127.0.0.1:5000/api/taxonomies/institutions/00216208/"},
        "accessRights": {"$ref": "http://127.0.0.1:5000/api/taxonomies/accessRights/c_abf2/"},
        "accessibility": [{"lang": "cze", "value": "Dostupné v digitálním repozitáři UK."}, {
            "lang": "eng", "value": "Available in the Charles University Digital Repository."
        }]
    }
    if not uk_provider:
        uk_provider = OAIProvider(
            code="uk",
            description="Univerzita Karlova",
            oai_endpoint="https://dspace.cuni.cz/oai/nusl",
            set_="nusl_set",
            metadata_prefix="xoai",
            constant_fields=constant_fields
        )
        db.session.add(uk_provider)
        db.session.commit()
    unhandled_paths = {
        "/dc/date/accessioned",
        "/dc/date/available",
        "/dc/date/issued",
        "/dc/identifier/repId",
        "/dc/identifier/aleph",
        "/dc/description/provenance",
        "/dc/description/department",
        "/dc/description/faculty",
        "/dc/language/cs_CZ",
        "/dc/publisher",
        "/dcterms/created",
        "/thesis/degree/name",
        "/thesis/degree/program",
        "/thesis/degree/level",
        "/uk/abstract",
        "/uk/thesis",
        "/uk/taxonomy",
        "/uk/faculty-name",
        "/uk/faculty-abbr",
        "/uk/degree-discipline",
        "/uk/degree-program",
        "/uk/publication-place",
        "uk/file-availability",
        "/bundles",
        "/others/handle",
        "/others/lastModifyDate",
        "/repository"
    }
    sync = OAISynchronizer(
        uk_provider,
        parser_name="xoai",
        unhandled_paths=unhandled_paths,
        create_record=nusl_theses.create_draft_record,
        update_record=nusl_theses.update_draft_record,
        delete_record=nusl_theses.delete_draft_record,
        pid_type="dnusl",
        validation=nusl_theses.validate,
        oai_identifiers=["oai:dspace.cuni.cz:20.500.11956/111006"]
    )
    sync.run()