Allows to store structured dataset metadata, single or multiple fields. Only one level of subfields is possible. The subfields can be basic text, date type o choice dropboxes. Do not use dashes or numbers in the labels or values of fields.
Developed for CKAn version 2.5.2. Requires the extensions ckanext-scheming and ckanext-repeating (using version from repository eawag-rdm).
To install ckanext-composite:
Install the ckan extensions ckanext-scheming and ckanext-composite
Activate your CKAN virtual environment, for example:
. /usr/lib/ckan/default/bin/activate
Install the ckanext-composite Python package into your virtual environment:
pip install ckanext-composite
Add
compositeto theckan.pluginssetting in your CKAN config file (by default the config file is located at/etc/ckan/default/production.ini).Restart CKAN. For example if you've deployed CKAN with Apache on Ubuntu:
sudo service apache2 reload
Additional config settings:
scheming.presets = ckanext.scheming:presets.json
ckanext.repeating:presets.json
ckanext.composite:presets.json
Add this to your schema.json file:
# Composite Field
{
"field_name": "maintainer",
"label": "Maintainer",
"preset": "composite",
"subfields":[
{
"field_name": "name",
"label": "Name",
"form_placeholder": "Joe Bloggs"
},
{
"field_name": "email",
"label": "Email",
"form_placeholder": "[email protected]"
},
{
"field_name": "date",
"label": "Date",
"preset": "date",
"form_placeholder": "yyyy-mm-mm"
},
{
"field_name": "identifier_scheme",
"label": "Scheme",
"preset": "select",
"choices": [
{
"value": "orcid",
"label": "ORCID"
},
{
"value": "isni",
"label": "ISNI"
}
]
}
]
}
# Composite Repeating Field
{
"field_name": "author",
"label": "Authors",
"preset": "composite_repeating",
"form_blanks": 1,
"subfields": [
{
"field_name": "name",
"label": "Name",
"form_placeholder":"eg. John Smith"
},
{
"field_name": "type",
"label": "Type",
choices = [
{
"value": "collaborator",
"label": "Collaborator"
},
{
"value": "editor",
"label": "Editor"
}
]
}
]
}
To install ckanext-composite for development, activate your CKAN virtualenv and do:
git clone https://github.com/EnviDat/ckanext-composite.git cd ckanext-composite python setup.py develop pip install -r dev-requirements.txt
To run the tests, do:
nosetests --nologcapture --with-pylons=test.ini
To run the tests and produce a coverage report, first make sure you have
coverage installed in your virtualenv (pip install coverage) then run:
nosetests --nologcapture --with-pylons=test.ini --with-coverage --cover-package=ckanext.composite --cover-inclusive --cover-erase --cover-tests
ckanext-composite should be availabe on PyPI as https://pypi.python.org/pypi/ckanext-composite. If that link doesn't work, then you can register the project on PyPI for the first time by following these steps:
Create a source distribution of the project:
python setup.py sdist
Register the project:
python setup.py register
Upload the source distribution to PyPI:
python setup.py sdist upload
Tag the first release of the project on GitHub with the version number from the
setup.pyfile. For example if the version number insetup.pyis 0.0.1 then do:git tag 0.0.1 git push --tags
ckanext-composite is availabe on PyPI as https://pypi.python.org/pypi/ckanext-composite. To publish a new version to PyPI follow these steps:
Update the version number in the
setup.pyfile. See PEP 440 for how to choose version numbers.Create a source distribution of the new version:
python setup.py sdist
Upload the source distribution to PyPI:
python setup.py sdist upload
Tag the new release of the project on GitHub with the version number from the
setup.pyfile. For example if the version number insetup.pyis 0.0.2 then do:git tag 0.0.2 git push --tags