コード例 #1
0
def loadlicenses():
    """Load Zenodo licenses.

    Create extra PID if license is to be mapped and already exists, otherwise
    create a new license record and a PID.
    """
    data = read_json('data/licenses.json')
    map_ = read_json('data/licenses_map.json')
    mapped = [(d, map_[d['id']] if d['id'] in map_ else None) for d in data]
    try:
        for lic, alt_pid in mapped:
            if lic['id'] == alt_pid:  # Skip the already-existing licenses
                continue
            if alt_pid:
                try:
                    pid, record = license_resolver.resolve(alt_pid)
                    license_minter(record.id, lic)
                except PIDDoesNotExistError:
                    create_new_license(lic)
            else:
                create_new_license(lic)
        db.session.commit()
    except Exception:
        db.session.rollback()
        raise
コード例 #2
0
def test_loadlicenses(script_info, license_server_mock, od_licenses_path,
                      od_licenses_json, spdx_licenses_path,
                      spdx_licenses_json):
    """Test load licenses."""
    assert PersistentIdentifier.query.count() == 0
    runner = CliRunner()
    license_pids = set()

    # Load opendefinition.org licenses twice (from URL and path)
    for cli_extra_args in ([], ['--path', od_licenses_path, '--eager']):
        result = runner.invoke(opendefinition,
                               ['loadlicenses'] + cli_extra_args,
                               obj=script_info)
        assert result.exit_code == 0
        for license_id, license in od_licenses_json.items():
            for license_id_variant in (license_id, license_id.lower()):
                pid, record = license_resolver.resolve(license_id_variant)
                assert record['title'] == license['title']
                assert record['url'] == license['url']
                assert record['id'] == license['id']
                license_pids.add(pid.pid_value)

    assert PersistentIdentifier.query.count() == len(license_pids)

    # Load spdx.org licenses twice (from URL and path)
    for cli_extra_args in ([], ['--path', spdx_licenses_path, '--eager']):
        result = runner.invoke(opendefinition,
                               ['loadlicenses', '--source', 'spdx'] +
                               cli_extra_args,
                               obj=script_info)
        assert result.exit_code == 0
        for license in spdx_licenses_json['licenses']:
            license_id = license['licenseId']
            for license_id_variant in (license_id, license_id.lower()):
                pid, record = license_resolver.resolve(license_id_variant)
                assert record['title'] == license['name']
                assert record['url'] == license['seeAlso'][-1]
                assert record['id'] == license_id
                license_pids.add(license_id_variant)

    assert PersistentIdentifier.query.count() == len(license_pids)
コード例 #3
0
def test_loadlicenses(script_info, licenses_example, license_server_mock):
    """Test load licenses."""
    assert PersistentIdentifier.query.count() == 0
    runner = CliRunner()

    # Run twice to test the updating code also
    for x in range(2):
        result = runner.invoke(opendefinition, ['loadlicenses'],
                               obj=script_info)
        assert result.exit_code == 0
        for license in licenses_example:
            pid, record = license_resolver.resolve(license)
            del record['$schema']
            assert record == licenses_example[license]

    assert PersistentIdentifier.query.count() == len(licenses_example)
コード例 #4
0
def test_loadlicenses(script_info, licenses_example, license_server_mock):
    """Test load licenses."""
    assert PersistentIdentifier.query.count() == 0
    runner = CliRunner()

    # Run twice to test the updating code also
    for x in range(2):
        result = runner.invoke(
            opendefinition,
            ['loadlicenses'],
            obj=script_info
        )
        assert result.exit_code == 0
        for license in licenses_example:
            pid, record = license_resolver.resolve(license)
            del record['$schema']
            assert record == licenses_example[license]

    assert PersistentIdentifier.query.count() == len(licenses_example)