=============
ckanext-tagmanager
=============

This is extensions aims to fill the tag managament gap of CKAN. CKAN core offers only a listing of tags, and edition through the the specific datasets. 

Tagmanager offers a graphical interface for adding, editing, removing and merging tags. This is usefull for big open data portals with many contributors, where tags are not always kept consistent.

In the future, we plan to offer the creation of relationships between tags, and connection to a central semantic tag server.

------------
Requirements
------------

Before installing tagmanager, make sure you have:

* CKAN 2.0+
* Levenshtein python library: https://github.com/ztane/python-Levenshtein/

------------
Installation
------------

To install ckanext-tagmanager:

1. Activate your CKAN virtual environment, for example::

     . /usr/lib/ckan/default/bin/activate

2. Install the ckanext-tagmanager Python package into your virtual environment::

     pip install ckanext-tagmanager

3. Add ``tagmanager`` to the ``ckan.plugins`` setting in your CKAN
   config file (by default the config file is located at
   ``/etc/ckan/default/production.ini``).

4. Restart CKAN. For example if you've deployed CKAN with Apache on Ubuntu::

     sudo service apache2 reload

------------------------
Development Installation
------------------------

To install ckanext-tagmanager for development, activate your CKAN virtualenv and
do::

    git clone https://github.com/alantygel/ckanext-tagmanager.git
    cd ckanext-tagmanager
    python setup.py develop
    pip install -r dev-requirements.txt


-----------------
Running the Tests
-----------------

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.tagmanager --cover-inclusive --cover-erase --cover-tests


---------------------------------
Registering ckanext-tagmanager on PyPI
---------------------------------

ckanext-tagmanager should be availabe on PyPI as
https://pypi.python.org/pypi/ckanext-tagmanager. If that link doesn't work, then
you can register the project on PyPI for the first time by following these
steps:

1. Create a source distribution of the project::

     python setup.py sdist

2. Register the project::

     python setup.py register

3. Upload the source distribution to PyPI::

     python setup.py sdist upload

4. Tag the first release of the project on GitHub with the version number from
   the ``setup.py`` file. For example if the version number in ``setup.py`` is
   0.0.1 then do::

       git tag 0.0.1
       git push --tags


----------------------------------------
Releasing a New Version of ckanext-tagmanager
----------------------------------------

ckanext-tagmanager is availabe on PyPI as https://pypi.python.org/pypi/ckanext-tagmanager.
To publish a new version to PyPI follow these steps:

1. Update the version number in the ``setup.py`` file.
   See `PEP 440 <http://legacy.python.org/dev/peps/pep-0440/#public-version-identifiers>`_
   for how to choose version numbers.

2. Create a source distribution of the new version::

     python setup.py sdist

3. Upload the source distribution to PyPI::

     python setup.py sdist upload

4. Tag the new release of the project on GitHub with the version number from
   the ``setup.py`` file. For example if the version number in ``setup.py`` is
   0.0.2 then do::

       git tag 0.0.2
       git push --tags
