{ "info": { "author": "Antony Wilson", "author_email": "antony.wilson@stfc.ac.uk", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "Delegation of the Minting of Datacite DOIs within an Organisation\n=================================================================\n\nIntroduction\n------------\nThis code provides a shim layer in front of the Datacite API in order to apply\nlocal security settings and limit the sub-domain for which a user can mint\nDOIs. It is designed to hook into an organisation's LDAP server in order to\nauthenticate users.\n\nThe Issue Addressed by this Software\n------------------------------------\nWe do not have a single central repository for our data and a number of groups\nare wishing to mint DOIs for their data. DataCite only provides one username\nand password and there is no way to limit the sub-domain (name space) within\nthe organisation's allocated domain, in which users mint DOIs. We wish to\ndivide up the organisation's domain in a controlled manner and allow named\nindividuals to manage the minting of DOIs within confines of a given\nsub-domain.\n\nThe Solution\n------------\nNamed individuals will have responsibility for a given sub-domain. The\nindividuals will have to agree to abide by the DataCite terms and conditions.\nThis software provides the ability to define sub-domains and an authorisation\nmechanism to control minting within those sub-domains.\n\nIn effect it provides a MDS service to control access to the DataCite MDS.\nCalls via the API are validated before the organisation's credentials are used\nto passed on the call to DataCite.\n\nThe aim is to provide a thin a layer as possible and simply pass on authorised\ncalls. Authentication is done via the organisation's LDAP server and\nauthorisation via local database which maps LDAP ids to sub-domains. The MDS\nReST API is provided and users are referred to the DataCite API documentation.\n\nThe software makes use of the django framework.\n\nIn addition to the API some basic web pages are provided.\n\nFuture Work\n-----------\nIt is intended to extend the web site to allow users to mint DOIs for their\nsub-domains via a web form.\n\nFollowing on from this it is intended to link this system with a central\nrepository. This system would be extended to generate landing pages for data in\nthe central repository. The system could then be opened up to anyone in the\norganisation to store data sets and mint DOIs under a central sub-domain.\n\nInstallation and Configuration\n==============================\n\nPrerequisites\n-------------\n\n- Python => 2.7\n- python-virtualenv\n- gcc\n- mod_ssl.x86_64\n- mod_wsgi.x86_64\n- openldap-devel\n- Apache\n\nInstallation\n------------\n\nCreate the directory for the static files\n\n.. code:: bash\n\n mkdir -p /var/www/html/doi\n\nCreate the directory for the sqlite database\n\n.. code:: bash\n\n mkdir -p /var/doi\n\nCreate the python virtual environment\n\n.. code:: bash\n\n cd /opt\n virtualenv doi\n cd doi\n source bin/activate\n export DJANGO_PROJECT_STATIC_FILES=/var/www/html/doi/\n\n\nLocal customisation for proxy, if required\n\n.. code:: bash\n\n export http_proxy=http://example.org:8080\n export https_proxy=http://example.org:8080\n\nInstall the software\n\n.. code:: bash\n\n pip install doi_site\n\nConfiguration\n-------------\n\nlocal_settings.py\n^^^^^^^^^^^^^^^^^\nCreate a copy of the ``local_settings.py.ini`` file as ``local_settings.py``\nReview the contents of this file and update the parameters. You MUST provide\nvalues for:\n\n- ``DOI_PREFIX`` - The organisation's DataCite prefix in the form nn.nnnn\n- ``DATACITE_USER_NAME`` - The organisation's username for DataCite\n- ``DATACITE_PASSWORD`` - The organisation's password for DataCite\n- ``AUTH_LDAP_SERVER_URI`` - The URI of the organisation's LDAP server\n- ``AUTH_LDAP_USER_DN_TEMPLATE`` - The organisation's LDAP DN template\n- ``ORGANISATION_NAME`` - The name of your organisation, this will be displayed on the home page\n- ``ORGANISATION_DOI_EMAIL`` - An email address for people to contact you about the this service, this will be displayed on the home page\n- ``SECRET_KEY`` - A secret key for a particular Django installation. This is used to provide cryptographic signing, and should be set to a unique, unpredictable value.\n- ``ALLOWED_HOSTS`` - A list of strings representing the host/domain names that this Django site can serve. This should include your server's hostname.\n\nYou should provide values for:\n\n- ``ROLES_URL`` - The URL of the location of the document detailing users roles and responsibilities\n- ``NOTES_URL`` - The URL of the location of the document containing notes for issuers\n\nAdditionally if necessary provide values for:\n\n- ``HTTP_PROXY_HOST`` - Web proxy host\n- ``HTTP_PROXY_PORT`` - Web proxy port\n\nBy default the DataCite ``TEST`` MDS is used. To use the ``PRODUCTION`` MDS\nuncomment:\n\n- ``DATACITE_URL``\n- ``DATACITE_HANDLER``\n\nIn a testing environment you can set ``DEBUG = True``\n\nInitialisation and Admin User Creation\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code:: bash\n\n python lib/python2.7/site-packages/doi_site/manage.py collectstatic --clear --noinput\n python lib/python2.7/site-packages/doi_site/manage.py syncdb --noinput\n python lib/python2.7/site-packages/doi_site/manage.py createsuperuser\n deactivate\n\nStuff for apache\n^^^^^^^^^^^^^^^^\n\n.. code:: bash\n\n cp -p /opt/doi/lib/python2.7/site-packages/doi_site/resources/doi_wsgi.conf /etc/httpd/conf.d/\n\nAssuming apache is running as the user ``apache``\n\n.. code:: bash\n\n chown -R apache /opt/doi\n chown -R apache /var/doi\n\n systemctl start httpd\n\n\nCustomisation of the Web Pages\n==============================\n\nThis code makes use of inheritance within the templates. It has been structured\nto make it relatively easy to customise the look and feel of the site.\nEverything inherits from base.html.\n\nbase.html -> organisation_wrapper.html -> everything else\n\nTo customise the appearance of the site provide your own\n``organisation_skin.html``, which should inherit from ``base.html``.\n\nChange ``organisation_wrapper.html`` to inherit from your ``organisation_skin.html``\n\nbase.html -> organisation_wrapper.html -> organisation_wrapper.html -> everything else\n\nWithin your ``organisation_skin.html`` you can override the following blocks:\n\n- head\n- page_header\n- navbar\n- content\n- footer\n\nPlace any css files in the directory ``static/doi_site/css/``\n\nIf you have made any changes you will have to restart apache\n\nAdding DOI Domains via the Admin Web Page\n=========================================\n\nThe software makes use of the ``Groups`` model provided by the django\nframework. ``Group`` has been extended to include sub-domain information. There\nis a one to one mapping between group and sub-domain.\n\nIn a browser go to the admin pages, i.e. ``https://example.org/admin/``\n\nIn order to log in you will need you the credentials that you used to create\nthe superuser\n\nClick on ``+Add`` besides the ``Groups`` label\n\nGive a name to the group and a DOI suffix\n\nSave your changes\n\n\nGranting Minting Privileges to Users\n====================================\n\nGet the user to log in with their LDAP username and password, this will create\na local account (the password is not stored in the django database).\n\nIn a browser go to the admin pages, i.e. ``https://example.org/admin/``\n\nYou will need you credentials that you used to create the superuser to log on\n\nClick on ``Users``\n\nClick on the user name you wish to edit\n\nFill in their personal information, first name, last name, email address (yes\nwe should really pull this in from LDAP)\n\nWithin the ``Groups`` in the ``Permissions`` section, assign the user to the\nrequired groups\n\nSave the changes\n\nThe user will then be able to mint DOIs for that groups DOI prefix", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://stfc.ac.uk/", "keywords": null, "license": "BSD License", "maintainer": null, "maintainer_email": null, "name": "doi-site", "package_url": "https://pypi.org/project/doi-site/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/doi-site/", "project_urls": { "Homepage": "http://stfc.ac.uk/" }, "release_url": "https://pypi.org/project/doi-site/0.2.0/", "requires_dist": null, "requires_python": null, "summary": "A simple Django app to wrap datacite calls.", "version": "0.2.0" }, "last_serial": 2086496, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "30d3ce593ff2620ef9da8c837b63b9f7", "sha256": "47a5ad043925a4bae3269f43c04a440b40cbb0a1e40bf558e71ec84f5e9b6dd4" }, "downloads": -1, "filename": "doi_site-0.1.0.tar.gz", "has_sig": false, "md5_digest": "30d3ce593ff2620ef9da8c837b63b9f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85124, "upload_time": "2015-11-30T12:00:01", "url": "https://files.pythonhosted.org/packages/9e/9f/1bdd89489aeca712e41e35dac602a920ad5fc321cb05ae6c71a61438882c/doi_site-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "24960e1e431e6c3157c8a2baf4fd0f11", "sha256": "85041fe35087b7d1117dde2c6a13d88dac1e03349722c950b6f51ce0434c24d4" }, "downloads": -1, "filename": "doi_site-0.1.1.tar.gz", "has_sig": false, "md5_digest": "24960e1e431e6c3157c8a2baf4fd0f11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85188, "upload_time": "2015-11-30T13:29:15", "url": "https://files.pythonhosted.org/packages/6b/df/9dda6b630fb3b582ae3b06366c66c153b61260debc48a4ed4c6e974231fd/doi_site-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f959064d6c9530710385ad55f33da826", "sha256": "4a96441e63f7b894239c02ea9d543f5dc783c61d887a37927419810671422cc9" }, "downloads": -1, "filename": "doi_site-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f959064d6c9530710385ad55f33da826", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87782, "upload_time": "2016-04-27T10:09:24", "url": "https://files.pythonhosted.org/packages/e2/44/ff258f50e4601766e5fcea05f29615704440622b6027e3ba5f4414cf98ee/doi_site-0.2.0.tar.gz" } ], "0.2.dev1": [ { "comment_text": "", "digests": { "md5": "81e6e37c41457efdb83f8bcabcda8439", "sha256": "d484653fd87b4ea8d6acde4840348564e4142aa119b9b7f243d7c435d5fe9f69" }, "downloads": -1, "filename": "doi_site-0.2.dev1.tar.gz", "has_sig": false, "md5_digest": "81e6e37c41457efdb83f8bcabcda8439", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85823, "upload_time": "2015-12-01T16:46:04", "url": "https://files.pythonhosted.org/packages/26/76/48ed79b41111bf942e9125fac6ad6f03f8c92efd2ef1098a1c23ac1f4e75/doi_site-0.2.dev1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f959064d6c9530710385ad55f33da826", "sha256": "4a96441e63f7b894239c02ea9d543f5dc783c61d887a37927419810671422cc9" }, "downloads": -1, "filename": "doi_site-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f959064d6c9530710385ad55f33da826", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87782, "upload_time": "2016-04-27T10:09:24", "url": "https://files.pythonhosted.org/packages/e2/44/ff258f50e4601766e5fcea05f29615704440622b6027e3ba5f4414cf98ee/doi_site-0.2.0.tar.gz" } ] }