CKAN扩展,为数据集添加“下载所有”按钮
项目描述
ckanext-downloadall
此CKAN扩展为数据集添加了“下载所有”按钮。这将下载一个包含所有资源文件和datapackage.json的zip文件。
此zip文件是打包数据以存储或发送的好方法,因为
您可以将所有数据文件保存在一起
您包括文档(元数据) - 避免了常见的问题,即被提供一些数据文件,但不知道其内容或如何找到相关信息
元数据是机器可读的,因此可以被工具、软件和自动化工作流程使用。例如
验证一系列数据发布都符合标准模式
将其加载到数据库中,使用元数据中指定的列类型和外键关系
datapackage.json是Frictionless Data标准,也称为数据包。
技术说明
如果资源被推送到/x加载到DataStore,则架构(列类型)也会包含在datapackage.json文件中。
此扩展使用CKAN后台作业在创建或更新数据集(或其数据字典更改)时创建zip文件。这适用于所有文件都上传的CKAN - 如果基础数据文件更改而没有更改CKAN URL,则zip文件将不会包括更新(直到其他东西触发zip更新)。
(此扩展受ckanext-packagezip的启发,但它是旧的,依赖于ckanext-archiver和IPipe。)
要求
设计为与CKAN 2.7+兼容
理想情况下,它与DataStore和xloader(或datapusher)一起使用,以便将数据字典作为架构包含在datapackage.json中,以描述列类型。
安装
要安装ckanext-downloadall
激活您的CKAN虚拟环境,例如
. /usr/lib/ckan/default/bin/activate
将ckanext-downloadall Python包安装到您的虚拟环境中
pip install ckanext-downloadall
将downloadall添加到您的CKAN配置文件中的ckan.plugins设置(默认配置文件位于/etc/ckan/default/production.ini)。例如:
ckan.plugins = downloadall
重新启动CKAN工作进程。例如,如果您已使用supervisord部署它
sudo supervisorctl restart ckan-worker:ckan-worker-00
重新启动CKAN服务器。例如,如果您已在Ubuntu上使用Apache部署CKAN
sudo service apache2 reload
6. 确保后台作业“工作进程”正在运行 - 参见https://docs.ckan.org/en/2.8/maintaining/background-tasks.html#running-background-jobs
配置设置
# Include additional fields from the dataset in the datapackage.json (e.g. # those defined in a ckanext-scheming schema) # (optional, space separated list). ckanext.downloadall.dataset_fields_to_add_to_datapackage = district county
命令行界面
有一个命令行界面
downloadall --help
使用示例
downloadall update-zip gold-prices downloadall update-all-zips
故障排除
“所有资源数据”显示为正常资源,而不是看到“下载所有”按钮
您需要在CKAN配置中启用此扩展并重新启动服务器。请参阅上面的安装部分。
ImportError: No module named datapackage
这意味着您有ckanapi的旧版本,它是ckanext-downloadall的依赖项。安装一个新版本。
OSError: [Errno 13] Permission denied: ‘/data/ckan/resources/c89’
您正在尝试从命令行更新zip,但以同步方式运行任务,而不是以正常的工作进程方式运行。在这种情况下,您需要以www-data用户运行它,例如
sudo -u www-data /usr/lib/ckan/default/bin/downloadall -c /etc/ckan/default/production.ini update-all-zips --synchronous
开发安装
要为开发安装ckanext-downloadall,激活您的CKAN虚拟env并执行
git clone https://github.com/davidread/ckanext-downloadall.git cd ckanext-downloadall python setup.py develop pip install -r dev-requirements.txt
请记住运行工作进程(在另一个终端中)
paster --plugin=ckan jobs worker --config=/etc/ckan/default/development.ini
运行测试
要运行测试,请执行
nosetests --nologcapture --with-pylons=test.ini
要运行测试并生成覆盖率报告,首先确保您已安装coverage在您的虚拟env中(pip install coverage),然后运行
nosetests --nologcapture --with-pylons=test.ini --with-coverage --cover-package=ckanext.downloadall --cover-inclusive --cover-erase --cover-tests
发布ckanext-downloadall的新版本
ckanext-downloadall可在PyPI上作为https://pypi.ac.cn/project/ckanext-downloadall/使用。要发布新版本到PyPI,请按照以下步骤操作
更新setup.py文件中的版本号。有关如何选择版本号的说明,请参阅PEP 440。
更新CHANGELOG.md,其中包含此版本的详细信息。
确保您有必要的最新版本的包
pip install --upgrade setuptools wheel twine
创建新版本的源和二进制分发版
python setup.py sdist bdist_wheel && twine check dist/*
修复您遇到的任何错误。
将源分发版上传到PyPI
twine upload dist/*
提交任何未解决的变化
git commit -a git push
在GitHub上使用来自setup.py文件的版本号标记项目的新版本。例如,如果setup.py中的版本号为0.0.1,则执行
git tag 0.0.1 git push --tags