Package: ckanext-graph
ckanext-graphA CKAN extension that adds a graph view for resources.OverviewAdds graph views for resources on a CKAN instance. Two types of graph are available: temporal (a line graph showing count over time based on a specified date field), and categorical (a bar chart showing counts for various values in a specified field).NB: the current version of this extension only works with the Natural History Museum'sElasticSearch datastore CKAN backend.However, it is designed to be extensible, so if you would like to use this extension with a different backend (e.g. the standard PostgreSQL datastore), please see theExtendingsection.InstallationPath variables used below:$INSTALL_FOLDER(i.e. where CKAN is installed), e.g./usr/lib/ckan/default$CONFIG_FILE, e.g./etc/ckan/default/development.iniInstalling from PyPIpipinstallckanext-graphInstalling from sourceClone the repository into thesrcfolder:cd$INSTALL_FOLDER/src
gitclonehttps://github.com/NaturalHistoryMuseum/ckanext-graph.gitActivate the virtual env:.$INSTALL_FOLDER/bin/activateInstall via pip:pipinstall$INSTALL_FOLDER/src/ckanext-graphInstalling in editable modeInstalling from apyproject.tomlin editable mode (i.e.pip install -e) requiressetuptools>=64; however, CKAN 2.9 requiressetuptools==44.1.0. Seeour CKAN forkfor a version of v2.9 that uses an updated setuptools if this functionality is something you need.Post-install setupAdd 'graph' to the list of plugins in your$CONFIG_FILE:ckan.plugins=... graphInstalllesscglobally:npminstall-g"less@~4.1"ConfigurationThese are the options that can be specified in your .ini config file.NameDescriptionOptionsDefaultckanext.graph.backendThe name of the backend to use (currently onlyelasticsearchis implemented)elasticsearch, sqlelasticsearchUsageTemplatesThe view will be added as an option with no further configuration necessary. However, if you wish to override or add content to the template, you can extendtemplates/graph/view.html:{%ckan_extends%}{%blockmy_new_block%}<p>Look, some exciting new content.</p>{%endblock%}ExtendingTo use this extension with a datastore backend other than the ElasticSearch backend already implemented, you'll have to subclass fromQueryinckanext-graph/ckanext/graph/db.py.An unimplemented class for SQL queries is already in the file as an example:classSqlQuery(Query):@propertydef_date_query(self):raiseNotImplementedError()@propertydef_count_query(self):raiseNotImplementedError()defrun(self):raiseNotImplementedError()If you add a new class, you'll have to add it to the dictionary inQuery.new()method to make it available as a configurable option.If you do this, please submit a pull request! Contributions are always welcome.TestingThere is a Docker compose configuration available in this repository to make it easier to run tests. The ckan image uses the Dockerfile in thedocker/folder.To run the tests against ckan 2.9.x on Python3:Build the required images:docker-composebuildThen run the tests.
The root of the repository is mounted into the ckan container as a volume by the Docker compose
configuration, so you should only need to rebuild the ckan image if you change the extension's
dependencies.docker-composerunckan