Source code for univention.admin.samba
# SPDX-FileCopyrightText: 2004-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only
"""|UDM| samba related code"""
import string
from collections import OrderedDict
[docs]
class acctFlags:
"""Samba Account Flags"""
def __init__(self, flagstring=None, flags=None, fallbackflags=None):
if flags is not None:
self.__flags = OrderedDict(flags)
return
if not flagstring or not isinstance(flagstring, str) or len(flagstring) != 13:
if fallbackflags is not None:
self.__flags = OrderedDict(fallbackflags)
return
flagstring = '[U ]'
flags = {}
flagstring = flagstring[1:-1]
for letter in flagstring:
if letter not in string.whitespace:
flags[letter] = 1
self.__flags = OrderedDict(flags)
def __setitem__(self, key, value):
self.__flags[key] = value
def __getitem__(self, key):
return self.__flags[key]
[docs]
def decode(self):
flagstring = '['
for flag, set in self.__flags.items():
if set:
flagstring = flagstring + flag
while len(flagstring) < 12:
flagstring += ' '
flagstring += ']'
return flagstring
[docs]
def set(self, flag):
self[flag] = 1
return self.decode()
[docs]
def unset(self, flag):
self[flag] = 0
return self.decode()