Coverage for apis_core/utils/settings.py: 44%
25 statements
« prev ^ index » next coverage.py v7.5.3, created at 2026-03-06 11:42 +0000
« prev ^ index » next coverage.py v7.5.3, created at 2026-03-06 11:42 +0000
1# SPDX-FileCopyrightText: 2023 Birger Schacht
2# SPDX-License-Identifier: MIT
4import logging
5import tomllib
6from urllib.parse import urlparse
8from django.conf import settings
9from django.template.utils import get_app_template_dirs
11logger = logging.getLogger(__name__)
14def dict_from_toml_directory(directory: str) -> dict:
15 configs = {}
16 pathlists = [path.glob("**/*.toml") for path in get_app_template_dirs(directory)]
17 for file in [path for pathlist in pathlists for path in pathlist]:
18 try:
19 configs[file.resolve()] = tomllib.loads(file.read_text())
20 except Exception as e:
21 logger.error(f"TOML parser could not read {file}: {e}")
22 return configs
25def internal_uris() -> list[str]:
26 return list(set([apis_base_uri()] + getattr(settings, "APIS_FORMER_BASE_URIS", [])))
29def apis_base_uri() -> str:
30 return getattr(settings, "APIS_BASE_URI", "https://example.org")
33def rdf_namespace_prefix() -> str:
34 if hasattr(settings, "APIS_RDF_NAMESPACE_PREFIX"):
35 return settings.APIS_RDF_NAMESPACE_PREFIX
36 base_uri = urlparse(apis_base_uri())
37 hostname = base_uri.hostname or "example.org"
38 return hostname.split(".", 1)[0]