跳转到主要内容

在CKAN上与LGA的ESD标准工作的辅助工具

项目描述

https://travis-ci.org/okfn/ckanext-esdstandards.svg?branch=master https://coveralls.io/repos/okfn/ckanext-esdstandards/badge.png?branch=master Latest Version Supported Python versions License

ckanext-esdstandards

在CKAN上使用LGA的ESD标准的辅助工具。

此扩展包含

  • 自动完成查找ESD功能和服务的操作函数

  • 表单小部件和验证器,以便轻松将ESD功能和服务的字段集成到自定义模式(添加 la_functionla_service 字段,在将数据集采集到 http://data.gov.uk 时支持)

  • 渲染数据集页面上的ESD功能和服务的代码片段。

有关更多详细信息,请参阅在自己的扩展中集成它

安装

要安装ckanext-esdstandards

  1. 激活您的CKAN虚拟环境,例如

    source /usr/lib/ckan/default/bin/activate
  2. 将ckanext-esdstandards Python包安装到您的虚拟环境中

    pip install ckanext-esdstandards
  3. esd添加到CKAN配置文件中的ckan.plugins设置(默认情况下,配置文件位于/etc/ckan/default/production.ini)。

  4. 通过运行以下命令来填充数据库表

    paster --plugin=ckanext-esdstandards esd initdb -c /etc/ckan/default/production.ini
    paster --plugin=ckanext-esdstandards esd load -c /etc/ckan/default/production.ini
  5. 重新启动CKAN。例如,如果您在Ubuntu上使用Apache部署了CKAN

    sudo service apache2 reload

在自己的扩展中集成它

此扩展默认情况下不会向您的CKAN实例添加任何内容(除了某些辅助操作和函数)。您需要修改项目扩展的架构和模板以添加字段和小部件。

la_functionla_service 字段添加到自定义模式

您需要使用 IDatasetForm 接口扩展默认CKAN架构(如教程中所述)。

此扩展提供了一些验证器以供使用。生成的字段应存储为额外的 la_functionla_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 %}

您应该会看到一些新的字段被添加,类似于定义标签的字段

http://i.imgur.com/sPqeK7q.png

在数据集页面上添加字段值

只需在自己的扩展中扩展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以完全隐藏没有定义值的行。

这些代码片段将展示这些字段被渲染的方式

http://i.imgur.com/0HFUwcw.png

开发安装

要为开发安装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上注册项目

  1. 创建项目的源分发版

    python setup.py sdist
  2. 注册项目

    python setup.py register
  3. 将源分发版上传到PyPI

    python setup.py sdist upload
  4. 在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,请按照以下步骤操作

  1. setup.py文件中更新版本号。有关版本号选择的信息,请参阅PEP 440

  2. 创建新版本的源分发版

    python setup.py sdist
  3. 将源分发版上传到PyPI

    python setup.py sdist upload
  4. 在GitHub上使用来自setup.py文件的版本号标记项目的新的版本。例如,如果setup.py中的版本号为0.0.2,则执行以下操作

    git tag 0.0.2
    git push --tags

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发版

ckanext-esdstandards-0.0.6.tar.gz (177.0 kB 查看哈希)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面