Source code for kuha_oai_pmh_repo_handler.configure
#!/usr/bin/env python3
# Author(s): Toni Sissala
# Copyright 2020 Finnish Social Science Data Archive FSD / University of Tampere
# Licensed under the EUPL. See LICENSE.txt for full license.
"""Configure OAI-PMH Repo Handler
"""
import os
from kuha_common import cli_setup
from kuha_oai_pmh_repo_handler.oai.protocol import (
ResumptionToken,
OAIResponse
)
from kuha_oai_pmh_repo_handler.oai.records import OAIHeaders
from kuha_oai_pmh_repo_handler.oai.constants import (
OAI_REC_NAMESPACE_IDENTIFIER,
OAI_RESPONSE_LIST_SIZE,
OAI_PROTOCOL_VERSION,
OAI_REPO_NAME,
OAI_RESPOND_WITH_REQ_URL
)
from kuha_oai_pmh_repo_handler.constants import (
TEMPLATE_FOLDER,
SERVER_PORT,
API_VERSION,
)
[docs]def configure(settings=None):
"""Get settings and configure application.
Declares application spesific configuration options
and some common options declared in :mod:`kuha_common.cli_setup`
Configure application with arguments specified in
configuration file, environment variables and command
line arguments.
:note: Calling this function multiple times
will not initiate new settings to be parsed, but
will return previously parsed settings instead.
:param settings: Optional settings to use for configuration.
If settings are already loaded this parameter
will be silently ignored.
:returns: settings
:rtype: :obj:`argparse.Namespace`
"""
if cli_setup.settings.is_settings_loaded():
return cli_setup.get_settings()
if not settings:
cli_setup.load(os.path.dirname(os.path.realpath(__file__)),
description='Run Kuha OAI-PMH Repo Handler.',
config_file='kuha_oai_pmh_repo_handler.ini')
cli_setup.add('--port',
help='Server port',
default=SERVER_PORT,
env_var='KUHA_OPRH_PORT',
type=int)
cli_setup.add('--template-folder',
help='Folder containing XML templates',
default=cli_setup.prepend_abs_dir_path(TEMPLATE_FOLDER),
env_var='KUHA_OPRH_TEMPLATES',
type=str)
cli_setup.add('--oai-pmh-repo-name',
help='OAI-PMH repository name',
default=OAI_REPO_NAME,
env_var='KUHA_OPRH_OP_REPO_NAME',
type=str)
cli_setup.add('--oai-pmh-base-url',
help='OAI-PMH base url',
required=True,
env_var='KUHA_OPRH_OP_BASE_URL',
type=str)
cli_setup.add('--oai-pmh-respond-with-requested-url',
help='OAI-PMH response uses base url of the request, rather than the configured base url.',
default=OAI_RESPOND_WITH_REQ_URL,
env_var='KUHA_OPRH_OP_RESP_WITH_REQ_URL',
action='store_true')
cli_setup.add('--oai-pmh-namespace-identifier',
help='Namespace identifier to use with OAI-Identifiers.',
default=OAI_REC_NAMESPACE_IDENTIFIER,
env_var='KUHA_OPRH_OP_NAMESPACE_ID',
type=str)
cli_setup.add('--oai-pmh-protocol-version',
help='OAI-PMH protocol version',
default=OAI_PROTOCOL_VERSION,
env_var='KUHA_OPRH_OP_PROTO_VERSION',
type=float)
cli_setup.add('--oai-pmh-results-per-list',
help='How many results should a list response contain',
default=OAI_RESPONSE_LIST_SIZE,
env_var='KUHA_OPRH_OP_LIST_SIZE',
type=int)
cli_setup.add('--oai-pmh-admin-email',
help='OAI-PMH administrator email address. Can be repeated for multiple addresses.',
action='append',
env_var='KUHA_OPRH_OP_EMAIL_ADMIN',
required=True,
type=str)
cli_setup.add('--oai-pmh-api-version',
help='OAI-PMH api version',
default=API_VERSION,
env_var='KUHA_OPRH_API_VERSION',
type=str)
cli_setup.add_print_configuration(cli_setup.settings.parser)
settings = cli_setup.setup(
cli_setup.MOD_DS_CLIENT,
cli_setup.MOD_DS_QUERY,
cli_setup.MOD_LOGGING
)
ResumptionToken.set_response_list_size(settings.oai_pmh_results_per_list)
OAIHeaders.set_namespace_identifier(settings.oai_pmh_namespace_identifier)
OAIResponse.set_protocol_version(settings.oai_pmh_protocol_version)
OAIResponse.set_base_url(settings.oai_pmh_base_url)
OAIResponse.set_admin_email(settings.oai_pmh_admin_email)
OAIResponse.set_repository_name(settings.oai_pmh_repo_name)
return settings