Skip to content

Commit

Permalink
parent-doi: add configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
utnapischtim committed May 14, 2024
1 parent 8cd6290 commit fc2811a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
4 changes: 3 additions & 1 deletion invenio_rdm_records/services/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Copyright (C) 2020-2024 CERN.
# Copyright (C) 2020-2021 Northwestern University.
# Copyright (C) 2021 TU Wien.
# Copyright (C) 2021-2023 Graz University of Technology.
# Copyright (C) 2021-2024 Graz University of Technology.
# Copyright (C) 2022 Universität Hamburg
#
# Invenio-RDM-Records is free software; you can redistribute it and/or modify
Expand Down Expand Up @@ -332,9 +332,11 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin):
parent_pids_providers = FromConfigPIDsProviders(
pids_key="RDM_PARENT_PERSISTENT_IDENTIFIERS",
providers_key="RDM_PARENT_PERSISTENT_IDENTIFIER_PROVIDERS",
doi_enabled_cfg_key="PARENT_DOI_ENABLED",
)
parent_pids_required = FromConfigRequiredPIDs(
pids_key="RDM_PARENT_PERSISTENT_IDENTIFIERS",
doi_enabled_cfg_key="PARENT_DOI_ENABLED",
)
parent_pids_conditional = FromConfigConditionalPIDs(
pids_key="RDM_PARENT_PERSISTENT_IDENTIFIERS",
Expand Down
11 changes: 7 additions & 4 deletions invenio_rdm_records/services/customizations.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#
# Copyright (C) 2021-2023 CERN.
# Copyright (C) 2022 Northwestern University.
# Copyright (C) 2024 Graz University of Technology.
#
# Invenio-RDM-Records is free software; you can redistribute it and/or modify
# it under the terms of the MIT License; see LICENSE file for more details.
Expand All @@ -12,10 +13,11 @@
class FromConfigPIDsProviders:
"""Data descriptor for pid providers configuration."""

def __init__(self, pids_key=None, providers_key=None):
def __init__(self, pids_key=None, providers_key=None, doi_enabled_cfg_key=None):
"""Initialize the config descriptor."""
self.pids_key = pids_key or "RDM_PERSISTENT_IDENTIFIERS"
self.providers_key = providers_key or "RDM_PERSISTENT_IDENTIFIER_PROVIDERS"
self.doi_enabled_cfg_key = doi_enabled_cfg_key or "DATACITE_ENABLED"

def __get__(self, obj, objtype=None):
"""Return value that was grafted on obj (descriptor protocol)."""
Expand All @@ -38,7 +40,7 @@ def get_provider_dict(pid_config, pid_providers):

pids = obj._app.config.get(self.pids_key, {})
providers = {p.name: p for p in obj._app.config.get(self.providers_key, [])}
doi_enabled = obj._app.config.get("DATACITE_ENABLED", False)
doi_enabled = obj._app.config.get(self.doi_enabled_cfg_key, False)

return {
scheme: get_provider_dict(conf, providers)
Expand All @@ -50,14 +52,15 @@ def get_provider_dict(pid_config, pid_providers):
class FromConfigRequiredPIDs:
"""Data descriptor for required pids configuration."""

def __init__(self, pids_key=None):
def __init__(self, pids_key=None, doi_enabled_cfg_key=None):
"""Initialize the config descriptor."""
self.pids_key = pids_key or "RDM_PERSISTENT_IDENTIFIERS"
self.doi_enabled_cfg_key = doi_enabled_cfg_key or "DATACITE_ENABLED"

def __get__(self, obj, objtype=None):
"""Return required pids (descriptor protocol)."""
pids = obj._app.config.get(self.pids_key, {})
doi_enabled = obj._app.config.get("DATACITE_ENABLED", False)
doi_enabled = obj._app.config.get(self.doi_enabled_cfg_key, False)

pids = {
scheme: conf
Expand Down

0 comments on commit fc2811a

Please sign in to comment.