Package: core-linked-records-app
This Django reusable app contains the PID functionalities for a CDCS project.Pre-requisitesFor automated and manual install, the following software are needed:pythonpipvirtual env (condaorvenv)In addition, for manual setup,gitis needed.InstallationAutomated installation$pipinstallcore_linked_records_appManual installation$gitclonehttps://github.com/usnistgov/core_linked_records_app.git$cdcore_linked_records_app$pythonsetup.py$pipinstallsdist/*.tar.gzConfigurationEdit the setting.py fileAdd the"core_linked_records_app"underINSTALLED_APPSas such:INSTALLED_APPS=[..."core_linked_records_app",]Add the necessary setting keys at the end of the file.ID_PROVIDER_SYSTEM_NAME="local",""" str: internal name of the provider system.
"""ID_PROVIDER_SYSTEM_CONFIG={"class":"core_linked_records_app.utils.providers.local.LocalIdProvider","args":[],}""" dict: provider system configuration for resolving PIDs.
"""ID_PROVIDER_PREFIXES=["cdcs"]""" list<str>: accepted prefixes if manually specifying PIDs (first item is the
default prefix).
"""ID_PROVIDER_PREFIX_DEFAULT=ID_PROVIDER_PREFIXES[0]""" str: default prefix for records (optional).
"""ID_PROVIDER_PREFIX_BLOB=ID_PROVIDER_PREFIXES[0]""" str: default prefix for blobs (optional).
"""PID_XPATH="root.pid"""" string: location of the PID in the document, specified as dot notation.
"""When using handle.net, theID_PROVIDER_SYSTEM_CONFIGkey has to be changed and
additional optional settings keys are available.ID_PROVIDER_SYSTEM_NAME="handle.net"""" str: internal name of the provider system.
"""ID_PROVIDER_SYSTEM_CONFIG={"class":"core_linked_records_app.utils.providers.handle_net.HandleNetSystem","args":["https://hdl.handle.net",# Lookup domain, displayed on the records."https://handle-net.domain",# Regsitration domain, for CRUD operations."300%3ACDCS/ADMIN","admin",],}""" dict: provider system configuration for resolving PIDs.
"""HANDLE_NET_RECORD_INDEX=1""" int: index of record when using handle.net.
"""HANDLE_NET_ADMIN_DATA={"index":100,"type":"HS_ADMIN","data":{"format":"admin","value":{"handle":f"0.NA/{ID_PROVIDER_PREFIX_DEFAULT}","index":200,"permissions":"011111110011",},},}""" dict: datastructure to insert with the record in order to give the
handle.net user creation, edition and deletion rights.
"""Edit the urls.py fileAdd thecore_linked_records_appurls to the Django project as such.re_path(r'^pid/',include("core_linked_records_app.urls")),Example configuration and XML file:The example below shows a configuration of a CDCS instance using the
core_linked_records_app settings and what an XML document with a PID would look
like in this case:Editsettings.py:SERVER_URI="http://localhost:8000"ID_PROVIDER_SYSTEM_NAME="local"ID_PROVIDER_SYSTEM_CONFIG={"class":"core_linked_records_app.utils.providers.local.LocalIdProvider","args":[],}ID_PROVIDER_PREFIXES=["cdcs"]PID_XPATH="root.pid"Upload the XML file:<root><pid>http://localhost:8000/pid/rest/local/cdcs/0123ABCD</pid></root>Explanation:The pid is stored in the “pid” element under the “root” element like indicated
in PID_XPATH (root.pid). The generated PID
(http://localhost:8000/pid/rest/local/cdcs/0123ABCD) is composed of:the SERVER_URI:http://localhost:8000the route to core_linked_records_app as defined in urls.py: pidthe route to the rest endpoints of this app: restthe name of the PID provider specified by ID_PROVIDER_SYSTEM_NAME: locala prefix found in the ID_PROVIDER_PREFIXES list: cdcsa unique random identifier generated by the local PID provider: 0123ABCDTestsTo play the test suite created for this package, download the git repository
and run:$pythonruntests.py