在CKAN上与LGA的ESD标准工作的辅助工具
项目描述
ckanext-esdstandards
在CKAN上使用LGA的ESD标准的辅助工具。
此扩展包含
自动完成查找ESD功能和服务的操作函数
表单小部件和验证器,以便轻松将ESD功能和服务的字段集成到自定义模式(添加 la_function 和 la_service 字段,在将数据集采集到 http://data.gov.uk 时支持)
渲染数据集页面上的ESD功能和服务的代码片段。
有关更多详细信息,请参阅在自己的扩展中集成它
安装
要安装ckanext-esdstandards
激活您的CKAN虚拟环境,例如
source /usr/lib/ckan/default/bin/activate
将ckanext-esdstandards Python包安装到您的虚拟环境中
pip install ckanext-esdstandards
将esd添加到CKAN配置文件中的ckan.plugins设置(默认情况下,配置文件位于/etc/ckan/default/production.ini)。
通过运行以下命令来填充数据库表
paster --plugin=ckanext-esdstandards esd initdb -c /etc/ckan/default/production.ini paster --plugin=ckanext-esdstandards esd load -c /etc/ckan/default/production.ini
重新启动CKAN。例如,如果您在Ubuntu上使用Apache部署了CKAN
sudo service apache2 reload
在自己的扩展中集成它
此扩展默认情况下不会向您的CKAN实例添加任何内容(除了某些辅助操作和函数)。您需要修改项目扩展的架构和模板以添加字段和小部件。
将 la_function 和 la_service 字段添加到自定义模式
您需要使用 IDatasetForm 接口扩展默认CKAN架构(如教程中所述)。
此扩展提供了一些验证器以供使用。生成的字段应存储为额外的 la_function 和 la_service(如data.gov.uk采集指南附录B中所述)。
此代码片段应很容易理解(注意:这假定CKAN>=2.3)
import ckan.plugins as plugins import ckan.plugins.toolkit as toolkit class MyPlugin(plugins.SingletonPlugin, toolkit.DefaultDatasetForm): plugins.implements(plugins.IDatasetForm) # IDatasetForm def _modify_package_schema(self, schema): schema.update({ 'la_function': [toolkit.get_validator('ignore_missing'), toolkit.get_validator('esd_function_validator'), toolkit.get_converter('convert_to_extras')], 'la_service': [toolkit.get_validator('ignore_missing'), toolkit.get_validator('esd_service_validator'), toolkit.get_converter('convert_to_extras')], }) return schema def create_package_schema(self): schema = super(MyPlugin, self).create_package_schema() schema = self._modify_package_schema(schema) return schema def update_package_schema(self): schema = super(MyPlugin, self).update_package_schema() schema = self._modify_package_schema(schema) return schema def show_package_schema(self): schema = super(MyPlugin, self).show_package_schema() default_validators = [toolkit.get_converter('convert_from_extras'), toolkit.get_validator('ignore_missing')] schema.update({ 'la_function': default_validators, 'la_service': default_validators, }) return schema
在CKAN版本低于2.3的情况下,验证器需要显式导入
import ckan.plugins as plugins import ckan.plugins.toolkit as toolkit from ckanext.esdstandards.validators import (esd_function_validator, esd_service_validator) class MyPlugin(plugins.SingletonPlugin, toolkit.DefaultDatasetForm): plugins.implements(plugins.IDatasetForm) # IDatasetForm def _modify_package_schema(self, schema): schema.update({ 'la_function': [toolkit.get_validator('ignore_missing'), esd_function_validator, toolkit.get_converter('convert_to_extras')], 'la_service': [toolkit.get_validator('ignore_missing'), esd_service_validator, toolkit.get_converter('convert_to_extras')], }) return schema def create_package_schema(self): schema = super(MyPlugin, self).create_package_schema() schema = self._modify_package_schema(schema) return schema def update_package_schema(self): schema = super(MyPlugin, self).update_package_schema() schema = self._modify_package_schema(schema) return schema def show_package_schema(self): schema = super(MyPlugin, self).show_package_schema() default_validators = [toolkit.get_converter('convert_from_extras'), toolkit.get_validator('ignore_missing')] schema.update({ 'la_function': default_validators, 'la_service': default_validators, }) return schema
将函数和服务字段添加到数据集表单中
该扩展提供了两个便捷的代码片段,这些代码片段将添加所有必要的标记和脚本到模板中。您需要在自己的扩展中扩展package_basic_fields.html模板,如下所示
# ckanext-yourext/ckanext/yourext/templates/package/snippets/package_basic_fields.html {% ckan_extends %} {% block package_basic_fields_custom %} {% snippet 'snippets/esd_functions.html', data=data, errors=errors %} {% snippet 'snippets/esd_services.html', data=data, errors=errors %} {% endblock %}
您应该会看到一些新的字段被添加,类似于定义标签的字段
在数据集页面上添加字段值
只需在自己的扩展中扩展additional_info.html模板,如下所示
# ckanext-yourext/ckanext/yourext/templates/package/snippets/additional_info.html {% ckan_extends %} {% block extras %} {{ super() }} {% snippet 'snippets/esd_functions_additional_info.html', data=pkg_dict %} {% snippet 'snippets/esd_services_additional_info.html', data=pkg_dict %} {% endblock %}
您可以向代码片段传递display_row_if_missing=False以完全隐藏没有定义值的行。
这些代码片段将展示这些字段被渲染的方式
开发安装
要为开发安装ckanext-esdstandards,激活您的CKAN虚拟环境并执行以下操作
git clone https://github.com/okfn/ckanext-esdstandards.git cd ckanext-esdstandards python setup.py develop
运行测试
要运行测试,执行以下操作
nosetests --nologcapture --ckan --with-pylons=test.ini
在PyPI上注册ckanext-esdstandards
ckanext-esdstandards应在PyPI上作为https://pypi.python.org/pypi/ckanext-esdstandards提供。如果该链接无法工作,则可以按照以下步骤首次在PyPI上注册项目
创建项目的源分发版
python setup.py sdist
注册项目
python setup.py register
将源分发版上传到PyPI
python setup.py sdist upload
在GitHub上使用来自setup.py文件的版本号标记项目的第一个版本。例如,如果setup.py中的版本号为0.0.1,则执行以下操作
git tag 0.0.1 git push --tags
发布ckanext-esdstandards的新版本
ckanext-esdstandards可在PyPI上作为https://pypi.python.org/pypi/ckanext-esdstandards提供。要将新版本发布到PyPI,请按照以下步骤操作
在setup.py文件中更新版本号。有关版本号选择的信息,请参阅PEP 440。
创建新版本的源分发版
python setup.py sdist
将源分发版上传到PyPI
python setup.py sdist upload
在GitHub上使用来自setup.py文件的版本号标记项目的新的版本。例如,如果setup.py中的版本号为0.0.2,则执行以下操作
git tag 0.0.2 git push --tags
项目详情
ckanext-esdstandards-0.0.6.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0bb763133c41b7641dda7823f24305e0a453655a28959a3eb1775740a0330e65 |
|
MD5 | 36230b39df8fea34e3f5610af517f7aa |
|
BLAKE2b-256 | 5a1cc4ad45431337778a280959352182ce0287fd652ce75921834680a37e6547 |