This extension provides minter and resolver of the ARK Identifier. Inspired by ckanext-doi.
Compatibility with core CKAN versions:
CKAN version | Compatible? |
---|---|
2.8 and earlier | no |
2.9 | yes |
2.10 | yes |
This extension is compatible with Python 3.8, 3.9, and 3.10.
To install ckanext-ark:
- Activate your CKAN virtual environment, for example:
. /usr/lib/ckan/default/bin/activate
- Install the ckanext-ark Python package into your virtual environment:
pip install ckanext-ark
-
Add
ark
to theckan.plugins
setting in your CKAN config file (by default the config file is located at/etc/ckan/default/ckan.ini
). -
Add a file
templates/package/read_base.html
in your custom extension (or modify/usr/lib/ckan/default/src/ckan/ckan/templates/package/read_base.html
if you are not using a custom extension):
{% ckan_extends %}
{% block secondary_content %}
{{ super() }}
{% snippet "ark/snippets/ark.html" %}
{% endblock %}
- Restart CKAN. For example if you've deployed CKAN with Apache on Ubuntu:
sudo service apache2 reload
- Initialize the database:
ckan -c /etc/ckan/default/ckan.ini ark initdb
To install ckanext-ark for development, activate your CKAN virtualenv and do:
git clone https://github.com/depositar/ckanext-ark.git
cd ckanext-ark
python setup.py develop
pip install -r dev-requirements.txt
You can request a Name Assigning Authority Number (NAAN) through this form.
ckanext.ark.naan = 99999 # This NAAN is for test purpose only
Name | Description | Default |
---|---|---|
ckanext.ark.nma_url |
The URL of NMA (Name Mapping Authority) | The same URL as ckan.site_url |
ckanext.ark.shoulder |
The Shoulder for subdividing a NAAN namespace | |
ckanext.ark.template |
The template for generating ARKs | zek |
Name | Description | Default |
---|---|---|
ckanext.ark.erc_mappings |
A mapping from ERC record to CKAN fields1 | {"who": "author", "what": "title", "when": ""} |
ckanext.ark.allow_missing_erc |
This controls if still assigning ARKs even if the fields defined in the ckanext.ark.erc_mappings is missing or empty2 |
True |
ckanext.ark.erc_support.who |
Who made the ARK support commitment | |
ckanext.ark.erc_support.what |
What the nature of the ARK support commitment was | |
ckanext.ark.erc_support.when |
When the ARK support commitment was made | |
ckanext.ark.erc_support.commitment |
A fuller explanation of the ARK support commitment |
delete-ark
: delete ARK identifier for existed dataset. Accept package's id (name) and ARK identifier (with and withoutark:
).
ckan -c /etc/ckan/default/ckan.ini ark delete-ark [NAME]
update-ark
: give ARK identifiers to existed datasets.
ckan -c /etc/ckan/default/ckan.ini ark update-ark
To run the tests, do:
pytest --ckan-ini=test.ini
ckanext-ark is available on PyPI as https://pypi.python.org/pypi/ckanext-ark. You can follow these steps to publish a new version:
-
Update the version number in the
setup.py
file. See PEP 440 for how to choose version numbers. -
Make sure you have the latest version of necessary packages:
pip install --upgrade build twine
- Create a source and binary distributions of the new version:
python -m build
Fix any errors you get.
- Upload the source distribution to PyPI:
twine upload dist/*
- Commit any outstanding changes:
git commit -a
git push
- Tag the new release of the project on GitHub with the version number from
the
setup.py
file. For example if the version number insetup.py
is 1.0.1 then do:
git tag v1.0.1
git push --tags
Footnotes
-
For the mapping of
when
field, the ISO 8601 YYYY-MM-DD is recommended. The date string will be converted to Temporal Enumerated Ranges (TEMPER) format (YYYYMMDD-YYYYMMDD). Note that the date validation is omitted. ↩ -
For the
when
field, a list containing a single value is not viewed as an empty value. ↩