author Denis Laxalde <>
Thu, 22 Jan 2015 18:07:51 +0100
changeset 67 64966fde037f
parent 45 5e3ef3b319cf
permissions -rw-r--r--
[entities] Let dataset_maintainer just return name and email information Thus do not force that downstream code to use CWUser.

This cube enables data publishing to a CKAN opendata portal.


The cube essentially provides hooks to push data in a CKAN instance. The
mapping from CubicWeb entities is handled by adapters which themselves rely on
dedicated attributes on the entities:

*   ``ICKANDataset`` adapter relies on a ``ckan_dataset_id`` attribute on the
    adapted entity. As its name suggests, the latter is used to relate a
    CubicWeb entity to a CKAN dataset (the fundamental entity type in CKAN
    data model).

*   ``ICKANResource`` adapter relies on a ``ckan_resource_id`` attribute. It
    is used to related some CubicWeb entity type to a CKAN resource.

The push of a resource on CKAN instance should be triggered by the
addition of a relation between the dataset-like entity and a resource-like
entity in CubicWeb. This is handled by the `LinkResourceToDatasetHook` hook,
which is abstract and should thus subclass by setting its `rtype` attribute.

See ``test/data`` for a minimal example.


Testing this cube requires a running CKAN instance with a (dedicated)
organization and a user with editors permission in the organization.
Corresponding information are expected in the `test/` file.


    baseurl = '<url-of-ckan-instance>'
    organization = '<organization-name>'
    apikey  = '<api-key-of-user-with-editors-permissions-on-organization>'

Note that, since CKAN does not expose an API function to purge datasets, we
can only *delete* them in tests. So, one has to manually purge test datasets
from the CKAN at `<baseurl>/ckan-admin/trash`.