Skip to main content

A django app to create and manage handle-pids

Project description

=============================
acdh-django-handle
=============================

.. image:: https://badge.fury.io/py/acdh-django-handle.svg
:target: https://badge.fury.io/py/acdh-django-handle

A django app to create and manage handle-pids_.


Quickstart
----------

Install acdh-django-handle::

pip install acdh-django-handle

Add it to your `INSTALLED_APPS`:

.. code-block:: python

INSTALLED_APPS = (
...
'handle',
...
)

Provide a handle-config dict:

.. code-block:: python

HANDLE = {
'resolver': "http://hdl.handle.net",
'user': "your handle-provider user",
'pw': "your handle-provider password",
'url': "base url to your handle-provider api",
'app_base_url': "the base url of your application"
}

example:

.. code-block:: python

HANDLE = {
'resolver': "http://hdl.handle.net",
'user': "user11.1234567-01",
'pw': "password1234",
'url': "http://pid.gwdg.de/handles/11.1234567-01/",
'app_base_url': "https://myproject.com"
}

The value of `app_base_url` will be concaneted with the value of the `get_absolute_url` method of the model instance you want to register a handle for.

And run

python manage.py migrate handle


Create/register handle-pids
----

The package provides a management command to bulk create/register handle-pids. For this you'll have to
* add a `GenericRelation` property to the model class you would like register handles for
* and make sure you have a `get_absolute_url` method defined

.. code-block:: python

from django.contrib.contenttypes.fields import GenericRelation
from handle.models import Pid

...

class Example(models.Model):
name = models.CharField(
max_length=255, blank=True,
)
...
pid = GenericRelation(Pid, blank=True, null=True, related_query_name="get_pid")
...
def get_absolute_url(self):
return reverse('example_detail', kwargs={'pk': self.id})

To register/create handle-pids run:

python manage.py crate_handles example

In case your GenericRelation property is named something else than `pid` you need to pass in the name as second argument, e.g:

python manage.py crate_handles example --pid=<name>

Handle-Pids will only be crated for objects which do not have a handle-pid yet.


Features
--------

* Provides a `Pid` class which stores
* a handle-pid
* creation and modification date
* a generic relation to any other class of your django project.
* an overidden save-method which will register/create a handle-pid on save in case you didn't provide a handle-pid

* Provides a `handle.utils.create_handle` function to register/create a new handle-pid

* Register/Create handle-pid for any objects in your project via admin-interface.

* Provides a management command to bulk create/register handle-pids for all instances of a model-class in your project.

Build and publish
-----

.. code-block:: console

python setup.py sdist bdist_wheel
twine upload dist/*

Credits
-------

Tools used in rendering this package:

* Cookiecutter_
* `cookiecutter-djangopackage`_

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage
.. _handle-pids: http://www.handle.net/




History
-------

0.1.0 (2018-06-28)
++++++++++++++++++

* First release on PyPI.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for acdh-django-handle, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size acdh_django_handle-0.1.1-py2.py3-none-any.whl (10.4 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size acdh-django-handle-0.1.1.tar.gz (9.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page