Source code for univention.appcenter.ucr
#!/usr/bin/python3
#
# Univention App Center
# univention-app wrapper for ucr functions
#
# SPDX-FileCopyrightText: 2015-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only
#
from copy import deepcopy
from univention.config_registry import ConfigRegistry
from univention.config_registry.frontend import ucr_update
from univention.config_registry.handler import run_filter
_UCR = ConfigRegistry()
_UCR.load()
[docs]
def ucr_load():
_UCR.load()
[docs]
def ucr_get(key, default=None):
return _UCR.get(key, default)
[docs]
def ucr_get_int(key, default=None):
return _UCR.get_int(key, default)
[docs]
def ucr_save(values):
changed_values = {}
_UCR.load()
for k, v in values.items():
if _UCR.get(k) != v:
changed_values[k] = v # noqa: PERF403
if changed_values:
ucr_update(_UCR, changed_values)
return changed_values
[docs]
def ucr_includes(key):
return key in _UCR
[docs]
def ucr_is_true(key, default=False, value=None):
return _UCR.is_true(key, default=default, value=value)
[docs]
def ucr_is_false(key):
return _UCR.is_false(key)
[docs]
def ucr_keys():
return _UCR.keys()
[docs]
def ucr_evaluated_as_true(value):
if isinstance(value, str):
value = value.lower()
return _UCR.is_true(value=value)
[docs]
def ucr_run_filter(string, additional=None):
ucr = _UCR
if additional:
# memory only ucr. not saved.
# if we would... NEVER __setitem__ on ucr!
ucr = deepcopy(ucr)
for k, v in additional.items():
ucr[k] = str(v)
return run_filter(string, ucr).decode('UTF-8')
[docs]
def ucr_instance():
return _UCR