Source code for univention.admin.policy

# SPDX-FileCopyrightText: 2015-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only

"""|UDM| policy utilities"""

from __future__ import annotations

from typing import Any

import univention.admin.localization
import univention.admin.syntax
from univention.admin.layout import Tab
from univention.admin.mapping import ListToString, mapping as MappingType


translation = univention.admin.localization.translation('univention.admin')
_ = translation.translate


[docs] def register_policy_mapping(mapping: MappingType) -> None: mapping.register('requiredObjectClasses', 'requiredObjectClasses') mapping.register('prohibitedObjectClasses', 'prohibitedObjectClasses') mapping.register('fixedAttributes', 'fixedAttributes') mapping.register('emptyAttributes', 'emptyAttributes') mapping.register('ldapFilter', 'ldapFilter', None, ListToString)
[docs] def policy_object_tab() -> Tab: return Tab(_('Object'), _('Object'), advanced=True, layout=[ ['ldapFilter'], ['requiredObjectClasses', 'prohibitedObjectClasses'], ['fixedAttributes', 'emptyAttributes'], ]) # fmt: skip
[docs] def requiredObjectClassesProperty(**kwargs: Any) -> tuple[str, univention.admin.property]: pargs = { 'short_description': _('Required object class'), 'long_description': '', 'syntax': univention.admin.syntax.ldapObjectClass, 'multivalue': True, } pargs.update(kwargs) return 'requiredObjectClasses', univention.admin.property(**pargs)
[docs] def prohibitedObjectClassesProperty(**kwargs: Any) -> tuple[str, univention.admin.property]: pargs = { 'short_description': _('Excluded object class'), 'long_description': '', 'syntax': univention.admin.syntax.ldapObjectClass, 'multivalue': True, } pargs.update(kwargs) return 'prohibitedObjectClasses', univention.admin.property(**pargs)
[docs] def fixedAttributesProperty(**kwargs: Any) -> tuple[str, univention.admin.property]: pargs = { 'short_description': _('Fixed attribute'), 'long_description': '', 'multivalue': True, } pargs.update(kwargs) return 'fixedAttributes', univention.admin.property(**pargs)
[docs] def emptyAttributesProperty(**kwargs: Any) -> tuple[str, univention.admin.property]: pargs = { 'short_description': _('Empty attribute'), 'long_description': '', 'multivalue': True, } pargs.update(kwargs) return 'emptyAttributes', univention.admin.property(**pargs)
[docs] def ldapFilterProperty(**kwargs: Any) -> tuple[str, univention.admin.property]: pargs = { 'short_description': _('LDAP filter'), 'long_description': _('This policy applies only to objects which matches this LDAP filter.'), 'syntax': univention.admin.syntax.ldapFilter, } pargs.update(kwargs) return 'ldapFilter', univention.admin.property(**pargs)