Source code for univention.udm.modules.groups_group
# SPDX-FileCopyrightText: 2018-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only
"""Module and object specific for "groups/group" UDM module."""
from ..encoders import (
SambaGroupTypePropertyEncoder, StringIntBooleanPropertyEncoder, StringIntPropertyEncoder,
dn_list_property_encoder_for,
)
from .generic import GenericModule, GenericObject, GenericObjectProperties
[docs]
class GroupsGroupObjectProperties(GenericObjectProperties):
"""groups/group UDM properties."""
_encoders = {
'UVMMGroup': StringIntBooleanPropertyEncoder,
'allowedEmailGroups': dn_list_property_encoder_for('groups/group'),
'allowedEmailUsers': dn_list_property_encoder_for('users/user'),
'gidNumber': StringIntPropertyEncoder,
'hosts': dn_list_property_encoder_for('auto'), # can be different types of computer/* objects
'memberOf': dn_list_property_encoder_for('groups/group'),
'nestedGroup': dn_list_property_encoder_for('groups/group'),
'sambaGroupType': SambaGroupTypePropertyEncoder,
'sambaRID': StringIntPropertyEncoder,
'users': dn_list_property_encoder_for('users/user'),
}
[docs]
class GroupsGroupObject(GenericObject):
"""Better representation of groups/group properties."""
udm_prop_class = GroupsGroupObjectProperties
[docs]
class GroupsGroupModule(GenericModule):
"""GroupsGroupObject factory"""
_udm_object_class = GroupsGroupObject
class Meta:
supported_api_versions = [1, 2, 3]
suitable_for = ['groups/group']
default_positions_property = 'groups'