在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 |