The extension helps synchronize the header and footer between CKAN and Drupal.
It uses two versions of the Drupal API - the core Rest API and the JSON:API.
The extension receives data from the Drupal portal through an endpoint (which can be configured in the case of the core REST API) and caches it for a certain time, which can also be changed using the Cache TTL config option, specifying the value in seconds. If you want to synchronize data more often, you need to set a smaller value.
- CKAN>=2.9
- python>=3.7
To install ckanext-drupal-api:
-
Activate your CKAN virtual environment, for example:
. /usr/lib/ckan/default/bin/activate
-
Clone the source and install it on the virtualenv
git clone https://github.com/DataShades/ckanext-drupal-api.git cd ckanext-drupal-api pip install -e . pip install -r requirements.txt
-
Add
drupal-api
to theckan.plugins
setting in your CKAN config file (by default the config file is located at/etc/ckan/default/ckan.ini
). -
Restart CKAN. For example if you've deployed CKAN with Apache on Ubuntu:
sudo service apache2 reload
The extension provides next configuration options:
# The URL of connected drupal instance
ckanext.drupal_api.drupal_url = http://drupal.com
# Request timeout for API calls in seconds
# (optional, default: 5)
ckanext.drupal_api.timeout = 10
# Cache TTL in seconds
# (optional, default: 3600)
ckanext.drupal_api.cache.duration = 60
# HTTP auth credentials (optional)
ckanext.drupal_api.request.user = username
ckanext.drupal_api.request.pass = password
# API versions, only two options: core & json
# Because, there are two supported API versions: JSON API & RESTful Web Services
ckanext.drupal_api.api_version = json
# If you are using the core API version, you might face the situation when your endpoint differ from the default one
# In this case, you can specify the menu export endpoint through the config, e.g.:
ckanext.drupal_api.core.menu_export_endpoint = /api/v1/menu_export
To install ckanext-drupal-api for development, activate your CKAN virtualenv and do:
git clone https://github.com/DataShades/ckanext-drupal-api.git
cd ckanext-drupal-api
python setup.py develop
pip install -r dev-requirements.txt
To run the tests, do:
pytest --ckan-ini=test.ini
If ckanext-drupal-api should be available on PyPI 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 setuptools wheel twine
-
Create a source and binary distributions of the new version:
python setup.py sdist bdist_wheel && twine check dist/*
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 0.0.1 then do:git tag 0.0.1 git push --tags