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