允许将数据集联合(推送)到另一个存储库
项目描述
CKAN 插件,用于将数据集联合到另一个 CKAN 实例。
该插件提供了一种将数据集联合到另一个 CKAN 实例的机制。如果数据集的自定义元数据中的联合标志设置为True,则对数据集的任何更新都将反映在联合版本中。联合数据集中的资源存储为原始资源的 URL。您必须拥有 CKAN 目标实例上用户的 API 密钥。请参阅下面的配置设置部分。
插件可以通过执行操作update_dataset_for_syndication和修改dataset_dict 值来修改发送给联合的数据 。如果 CKAN 实例之间的模式不同,这很有用。
要求
使用 CKAN 2.5.2 测试
需要芹菜
要通过 SSL 工作,需要pyOpenSSL、ndg-httpsclient和pyasn1
通过主管在生产环境中运行 Celery 可能很有用
安装
要安装 ckanext-syndicate:
激活您的 CKAN 虚拟环境,例如:
. /usr/lib/ckan/default/bin/activate
将 ckanext-syndicate Python 包安装到您的虚拟环境中:
pip install ckanext-syndicate
将syndicate添加到 CKAN 配置文件中的ckan.plugins设置(默认情况下,配置文件位于 /etc/ckan/default/production.ini)。
重启 CKAN。例如,如果您在 Ubuntu 上使用 Apache 部署了 CKAN:
sudo service apache2 reload
您还需要设置芹菜。在开发环境中,这可以通过虚拟环境中的以下 paste 命令来完成:
paster --plugin=ckan celeryd run -c /etc/ckan/default/development.ini
在生产环境中,可以通过 supervisor 配置 celery,例如/etc/supervisor/conf.d/celery.conf:
[program:celery] autorestart=true autostart=true command=/usr/lib/ckan/default/bin/paster --plugin=ckan celeryd --config=/etc/ckan/default/production.ini numprocs=1 priority=998 redirect_stderr=true startsecs=10 stderr_logfile=/var/log/celeryd.log stdout_logfile=/var/log/celeryd.log stopwaitsecs=600 user=www-data
配置设置
# The URL of the site to be syndicated to ckan.syndicate.ckan_url = https://data.humdata.org/ # The API key of the user on the syndicated site ckan.syndicate.api_key = 9efdd954-c643-444a-97a1-c9c374cef861 # The custom metadata flag used for syndication # (optional, default: syndicate). ckan.syndicate.flag = syndicate_to_hdx # The custom metadata field to store the syndicated dataset ID # on the original dataset # (optional, default: syndicated_id) ckan.syndicate.id = hdx_id # A prefix to apply to the name of the syndicated dataset # (optional, default: ) ckan.syndicate.name_prefix = my-prefix # The name of the organization on the target CKAN to use when creating # the syndicated datasets # (optional, default: None) ckan.syndicate.organization = my-org-name
开发安装
要安装 ckanext-syndicate 进行开发,请激活您的 CKAN virtualenv 并执行以下操作:
git clone https://github.com/aptivate/ckanext-syndicate.git cd ckanext-syndicate python setup.py develop pip install -r dev-requirements.txt
另请参阅安装
运行测试
要运行测试,请执行以下操作:
nosetests --nologcapture --with-pylons=test.ini
要运行测试并生成覆盖率报告,首先确保你的 virtualenv 中安装了覆盖率(pip install coverage)然后运行:
nosetests --nologcapture --with-pylons=test.ini --with-coverage --cover-package=ckanext.syndicate --cover-inclusive --cover-erase --cover-tests
在 PyPI 上注册 ckanext-syndicate
ckanext-syndicate 应该在 PyPI 上作为 https://pypi.python.org/pypi/ckanext-syndicate可用。如果该链接不起作用,那么您可以按照以下步骤首次在 PyPI 上注册项目:
创建项目的源代码分发:
python setup.py sdist
注册项目:
python setup.py register
将源分发上传到 PyPI:
python setup.py sdist upload
使用setup.py文件中的版本号标记 GitHub 上项目的第一个版本。例如,如果setup.py中的版本号为 0.0.1,则执行以下操作:
git tag 0.0.1 git push --tags
发布新版本的 ckanext-syndicate
ckanext-syndicate 在 PyPI 上可用https://pypi.python.org/pypi/ckanext-syndicate。要将新版本发布到 PyPI,请执行以下步骤:
更新setup.py文件中的版本号。 有关如何选择版本号的信息,请参阅PEP 440 。
创建新版本的源代码分发:
python setup.py sdist
将源分发上传到 PyPI:
python setup.py sdist upload
使用setup.py文件中的版本号标记 GitHub 上项目的新版本。例如,如果setup.py中的版本号是 0.0.2,那么执行以下操作:
git tag 0.0.2 git push --tags