Source code for univention.portal.factory

#!/usr/bin/python3
#
# Univention Portal
#
# SPDX-FileCopyrightText: 2020-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only
#


from univention.portal import config, get_dynamic_classes


[docs] def make_arg(arg_definition): arg_type = arg_definition["type"] if arg_type == "static": return arg_definition["value"] elif arg_type == "config": return config.fetch(arg_definition["key"]) elif arg_type == "class": Klass = get_dynamic_classes(arg_definition["class"]) args = [] kwargs = {} for _arg_definition in arg_definition.get("args", []): args.append(make_arg(_arg_definition)) for name, _arg_definition in arg_definition.get("kwargs", {}).items(): kwargs[name] = make_arg(_arg_definition) return Klass(*args, **kwargs) raise TypeError(f"Unknown arg_definition: {arg_definition!r}")
[docs] def make_portal(portal_definition): return make_arg(portal_definition)